【问题标题】:How would I import .pkl.gz file from my computer into a python program我如何将 .pkl.gz 文件从我的计算机导入 python 程序
【发布时间】:2017-03-17 13:57:06
【问题描述】:

我有自己的数据集,我想在上面训练我的模型。我已经成功创建了 .pk.gz 文件,但我不知道如何将它们导入到我的模型中。

我正在使用带有 tensor-flow 和 tflearn 和 sublime text 3 的 windows 10、python 3.5.2 来编写代码。

我用来创建pickle文件的代码:

from numpy import genfromtxt

import gzip
import _pickle as cPickle

#data = sio.loadmat('C:/DeepLearning_lib/Theano/Data/test_x.mat')

train_set_x = genfromtxt('C:/Users/Jay/Desktop/MachineLearning/dataset/NSL-KDD Processed/Kdd_Train_41.csv', delimiter=',')

train_set_y = genfromtxt('C:/Users/Jay/Desktop/MachineLearning/dataset/NSL-KDD Processed/NSL_TrainLabels_mat4.csv', delimiter=',')

valid_set_x = genfromtxt('C:/Users/Jay/Desktop/MachineLearning/dataset/NSL-KDD Processed/Kdd_Valid_41.csv', delimiter=',')

valid_set_y = genfromtxt('C:/Users/Jay/Desktop/MachineLearning/dataset/NSL-KDD Processed/NSL_ValidLabels_int2.csv', delimiter=',')

test_set_x = genfromtxt('C:/Users/Jay/Desktop/MachineLearning/dataset/NSL-KDD Processed/Kdd_Test_41.csv', delimiter=',')

test_set_y = genfromtxt('C:/Users/Jay/Desktop/MachineLearning/dataset/NSL-KDD Processed/NSL_TestLabels_mat5.csv', delimiter=',')



train_set = test_set_x
train_set_labels= test_set_y

valid_set = valid_set_x
valid_set_labels= valid_set_y

test_set = train_set_x
test_set_labels= train_set_y


f = gzip.open('C:/Users/Jay/Desktop/Data/train_set.pkl.gz','wb')
cPickle.dump(train_set, f, protocol=2)

f.close()

f = gzip.open('C:/Users/Jay/Desktop/Data/train_set_labels.pkl.gz','wb')
cPickle.dump(train_set_labels, f, protocol=2)

f.close()

f = gzip.open('C:/Users/Jay/Desktop/Data/valid_set_labels.pkl.gz','wb')
cPickle.dump(valid_set_labels, f, protocol=2)

f.close()
f = gzip.open('C:/Users/Jay/Desktop/Data/test_set_labels.pkl.gz','wb')
cPickle.dump(test_set_labels, f, protocol=2)

f.close()
f = gzip.open('C:/Users/Jay/Desktop/Data/valid_set.pkl.gz','wb')
cPickle.dump(valid_set, f, protocol=2)

f.close()
f = gzip.open('C:/Users/Jay/Desktop/Data/test_set.pkl.gz','wb')
cPickle.dump(test_set, f, protocol=2)

f.close()

错误:当使用'rb'时

'OSError: [Errno 9] peek() on write-only GzipFile object'

【问题讨论】:

  • 您能否展示您用于创建文件的代码,并告诉我们它们包含哪些类型的数据?如果.pkl 表示您使用Python pickle 模块使用pickle.dump() 编写,您应该能够使用pickle.load() 来检索对象。
  • import gzip import _pickle as cPickle f = gzip.open('C:/Users/Jay/Desktop/Data/train_set.pkl.gz','wb') cPickle.load(train_set) print(train_set) f.close() 未导入

标签: python-3.x tensorflow tflearn


【解决方案1】:

下面的代码应该重构你的train_set

with gzip.open('C:/Users/Jay/Desktop/Data/train_set.pkl.gz', 'rb') as f:
  train_set = cPickle.load(f)

【讨论】:

  • OSError: [Errno 9] peek() on write-only GzipFile object 收到此错误!
  • 糟糕,我从your comment 复制了'wb',没有考虑它的含义:)。改为'rb',现在应该可以了。
  • 我在文档中将其更改为 rb...无效
  • 错误应该是不同的,对吧? (f 不再是“只写”...)
  • @Sascha 添加。请检查
猜你喜欢
  • 1970-01-01
  • 2018-07-10
  • 2013-05-17
  • 1970-01-01
  • 2015-06-07
  • 1970-01-01
  • 2019-12-18
  • 2011-08-08
  • 1970-01-01
相关资源
最近更新 更多