kar*_*TUM 6 python deep-learning tensorflow
我有一个大小的hdf5训练数据集(21760, 1, 33, 33)
.21760
是整个培训样本数量.我想使用大小的小批量训练数据128
来训练网络.
我想问一下:
如何128
从每个具有张量流的整个数据集中提供小批量训练数据?
alk*_*nen 10
如果您的数据集太大而无法像keveman建议的那样导入到内存中,则可以直接使用h5py对象:
import h5py
import tensorflow as tf
data = h5py.File('myfile.h5py', 'r')
data_size = data['data_set'].shape[0]
batch_size = 128
sess = tf.Session()
train_op = # tf.something_useful()
input = # tf.placeholder or something
for i in range(0, data_size, batch_size):
current_data = data['data_set'][position:position+batch_size]
sess.run(train_op, feed_dict={input: current_data})
Run Code Online (Sandbox Code Playgroud)
如果您愿意,还可以运行大量迭代并随机选择批处理:
import random
for i in range(iterations):
pos = random.randint(0, int(data_size/batch_size)-1) * batch_size
current_data = data['data_set'][pos:pos+batch_size]
sess.run(train_op, feed_dict={inputs=current_data})
Run Code Online (Sandbox Code Playgroud)
或顺序:
for i in range(iterations):
pos = (i % int(data_size / batch_size)) * batch_size
current_data = data['data_set'][pos:pos+batch_size]
sess.run(train_op, feed_dict={inputs=current_data})
Run Code Online (Sandbox Code Playgroud)
您可能希望编写一些更复杂的代码,这些代码随机地遍历所有数据,但会跟踪已使用的批次,因此您不会比其他批次更频繁地使用任何批次.完成训练集的完整运行后,再次启用所有批次并重复.
您可以将hdf5数据集读入numpy数组,并将numpy数组的切片提供给TensorFlow模型.像下面这样的伪代码可以工作:
import numpy, h5py
f = h5py.File('somefile.h5','r')
data = f.get('path/to/my/dataset')
data_as_array = numpy.array(data)
for i in range(0, 21760, 128):
sess.run(train_op, feed_dict={input:data_as_array[i:i+128, :, :, :]})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7759 次 |
最近记录: |