gpt4 book ai didi

python - 如何以 "mnist.pkl.gz"中使用的确切格式和数据结构将我的数据集放入 .pkl 文件中?

转载 作者:太空狗 更新时间:2023-10-29 20:45:39 27 4
gpt4 key购买 nike

我正在尝试使用 python 中的 Theano 库对深度信念网络进行一些实验。我使用这个地址中的代码:DBN full code .此代码使用 MNIST Handwritten database .该文件已经是 pickle 格式。它未被选中:

  • 训练集
  • 有效集
  • 测试集

进一步未 pickle 的是:

  • train_set_x, train_set_y = train_set
  • valid_set_x, valid_set_y = valid_set
  • test_set_x, test_set_y = test_set

有人可以给我构建此数据集的代码以便创建我自己的吗?我使用的 DBN 示例需要这种格式的数据,但我不知道该怎么做。如果有人对如何解决此问题有任何想法,请告诉我。

这是我的代码:

from datetime import datetime
import time
import os
from pprint import pprint
import numpy as np
import gzip, cPickle
import theano.tensor as T
from theano import function


os.system("cls")

filename = "completeData.txt"


f = open(filename,"r")
X = []
Y = []

for line in f:
line = line.strip('\n')
b = line.split(';')
b[0] = float(b[0])
b[1] = float(b[1])
b[2] = float(b[2])
b[3] = float(b[3])
b[4] = float(b[4])
b[5] = float(b[5])
b[6] = float(b[6])
b[7] = float(b[7])
b[8] = float(b[8])
b[9] = float(b[9])
b[10] = float(b[10])
b[11] = float(b[11])
b[12] = float(b[12])
b[13] = float(b[13])
b[14] = float(b[14])
b[15] = float(b[15])
b[17] = int(b[17])
X.append(b[:16])
Y.append(b[17])

Len = len(X);
X = np.asmatrix(X)
Y = np.asarray(Y)

sizes = [0.8, 0.1, 0.1]
arr_index = int(sizes[0]*Len)
arr_index2_start = arr_index + 1
arr_index2_end = arr_index + int(sizes[1]*Len)
arr_index3_start = arr_index2_start + 1

"""
train_set_x = np.array(X[:arr_index])
train_set_y = np.array(Y[:arr_index])

val_set_x = np.array(X[arr_index2_start:arr_index2_end])
val_set_y = np.array(Y[arr_index2_start:arr_index2_end])

test_set_x = np.array(X[arr_index3_start:])
test_set_y = np.array(X[arr_index3_start:])

train_set = train_set_x, train_set_y
val_set = val_set_x, val_set_y
test_set = test_set_x, test_set_y
"""
x = T.dmatrix('x')
z = x
t_mat = function([x],z)

y = T.dvector('y')
k = y
t_vec = function([y],k)

train_set_x = t_mat(X[:arr_index].T)
train_set_y = t_vec(Y[:arr_index])
val_set_x = t_mat(X[arr_index2_start:arr_index2_end].T)
val_set_y = t_vec(Y[arr_index2_start:arr_index2_end])
test_set_x = t_mat(X[arr_index3_start:].T)
test_set_y = t_vec(Y[arr_index3_start:])

train_set = train_set_x, train_set_y
val_set = val_set_x, val_set_y
test_set = test_set_x, test_set_y

dataset = [train_set, val_set, test_set]

f = gzip.open('..\..\..\data\dex.pkl.gz','wb')
cPickle.dump(dataset, f, protocol=-1)
f.close()

pprint(train_set_x.shape)

print('Finished\n')

最佳答案

将 Theano 教程中的代码改编为您自己的数据不需要 .pkl 文件。你只需要模仿他们的数据结构。

快速修复

查找以下行。它是 DBN.py 上的第 303 行。

datasets = load_data(dataset)
train_set_x, train_set_y = datasets[0]

替换为您自己的train_set_xtrain_set_y

my_x = []
my_y = []
with open('path_to_file', 'r') as f:
for line in f:
my_list = line.split(' ') # replace with your own separator instead
my_x.append(my_list[1:-1]) # omitting identifier in [0] and target in [-1]
my_y.append(my_list[-1])
train_set_x = theano.shared(numpy.array(my_x, dtype='float64'))
train_set_y = theano.shared(numpy.array(my_y, dtype='float64'))

根据您的输入数据和您使用的代码调整它。

cA.pydA.pySdA.py 同样适用,但它们只使用 train_set_x.

寻找诸如 n_ins=28 * 28 之类的地方,其中 mnist 图像大小是硬编码的。将 28 * 28 替换为您自己的列数。

说明

这是您将数据放入 Theano 可以使用的格式的地方。

train_set_x = theano.shared(numpy.array(my_x, dtype='float64'))
train_set_y = theano.shared(numpy.array(my_y, dtype='float64'))

shared() 将 numpy 数组转换为专为提高 GPU 效率而设计的 Theano 格式。

dtype='float64' 应在 Theano 数组中。

有关 basic tensor functionality 的更多详细信息.

.pkl文件

.pkl 文件是一种保存数据结构的方法。

您可以创建自己的。

import cPickle
f = file('my_data.pkl', 'wb')
cPickle.dump((train_set_x, train_set_y), f, protocol=cPickle.HIGHEST_PROTOCOL)
f.close()

有关 loading and saving 的更多详细信息.

关于python - 如何以 "mnist.pkl.gz"中使用的确切格式和数据结构将我的数据集放入 .pkl 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26107927/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com