【发布时间】:2019-05-27 05:50:40
【问题描述】:
我正在尝试仅为一个项目下载 MNIST 手写数字数据库的一部分。具体来说,我只希望将数字 0、1、2 和 3 发送到神经网络。
我目前正在加载这样的数据(基于"Neural Networks and Deep Learning" by Michal Daniel Dobrzanski):
import cPickle
import gzip
import numpy as np
def load_data():
f = gzip.open('src/mnist.pkl.gz', 'rb')
training_data, validation_data, test_data = cPickle.load(f)
f.close()
return (training_data, validation_data, test_data)
def load_data_wrapper():
tr_d, va_d, te_d = load_data()
training_inputs = [np.reshape(x, (784, 1)) for x in tr_d[0]]
training_results = [vectorized_result(y) for y in tr_d[1]]
training_data = zip(training_inputs, training_results)
validation_inputs = [np.reshape(x, (784, 1)) for x in va_d[0]]
validation_data = zip(validation_inputs, va_d[1])
test_inputs = [np.reshape(x, (784, 1)) for x in te_d[0]]
test_data = zip(test_inputs, te_d[1])
return (training_data, validation_data, test_data)
我尝试构建一个从load_data() 创建新数据集的函数,然后发送到load_data_wrapper()(通过将load_data_wrapper() 中的tr_d, va_d, te_d = load_data() 更改为tr_d, va_d, te_d = digitTest()),但没有成功,见下文:
def digitTest():
tr_d, va_d, te_d = load_data()
tr_d = list(tr_d)
va_d = list(va_d)
te_d = list(te_d)
newTrD = []
newTrD.append([])
newTrD.append([])
newVaD = []
newVaD.append([])
newVaD.append([])
newTeD = []
newTeD.append([])
newTeD.append([])
for index,label in enumerate(tr_d[1]):
if tr_d[1][index] < 4:
newTrD[0].append(tr_d[0][index])
newTrD[1].append(tr_d[1][index])
for index,label in enumerate(va_d[1]):
if va_d[1][index] < 4:
newVaD[0].append(va_d[0][index])
newVaD[1].append(va_d[1][index])
for index,label in enumerate(te_d[1]):
if te_d[1][index] < 4:
newTeD[0].append(te_d[0][index])
newTeD[1].append(te_d[1][index])
return (newTrD, newVaD, newTeD)
是否有可能实现我的目标?我怎样才能做到这一点?请注意,从 load_data 函数解析时,数据存储在元组中。
【问题讨论】:
-
请分享您的解决方案,稍后当您有解决方案时。谢谢。