【发布时间】:2017-09-07 16:14:51
【问题描述】:
我为一个包含 Keras 的 mat 文件的大型数据集编写了一个数据生成器。
这是我的代码,我尝试解决 3 个类的问题,它们的数据位于不同的文件夹(一、二、三)中,并且每批都会从这些文件夹中随机填充。
def generate_arrays_from_file(path,nc1,nc2,nc3):
while True:
for line in range(batch_size):
Data,y=fetch_data(path,nc1,nc2,nc3)
yield (Data, y)
def fetch_data(path,nc1,nc2,nc3):
trainData = numpy.empty(shape=[batch_size,img_rows, img_cols ])
y = []
for line in range(batch_size):
labelClass = random.randint(0, 2)
if labelClass == 0:
random_num = random.randint(1, nc1)
file_name = path + '/' + 'one/one-' + str(random_num) + '.mat'
elif labelClass == 1:
random_num = random.randint(1, nc2)
file_name = path + '/' + 'two/two-' + str(random_num) + '.mat'
else:
random_num = random.randint(1, nc3)
file_name = path + '/' + 'three/three-' + str(random_num) + '.mat'
matfile = h5py.File(file_name)
x = matfile['data']
x = numpy.transpose(x.value, axes=(1, 0))
trainData[line,:,:]=x
y.append(labelClass)
trainData = trainData.reshape(trainData.shape[0], img_rows, img_cols, 1)
return trainData,y
这段代码可以运行,但是 batch_size 设置为 16,但是 keras 的输出是这样的
1/50000 [..............................] - ETA: 65067s - loss: 1.1666 - acc: 0.2500
2/50000 [..............................] - ETA: 34057s - loss: 1.4812 - acc: 0.2188
3/50000 [..............................] - ETA: 24202s - loss: 1.6554 - acc: 0.1875
4/50000 [..............................] - ETA: 18799s - loss: 1.5569 - acc: 0.2344
5/50000 [..............................] - ETA: 15611s - loss: 1.4662 - acc: 0.2625
6/50000 [..............................] - ETA: 13863s - loss: 1.4563 - acc: 0.2500
8/50000 [..............................] - ETA: 10978s - loss: 1.3903 - acc: 0.2734
9/50000 [..............................] - ETA: 10402s - loss: 1.3595 - acc: 0.2778
10/50000 [..............................] - ETA: 10253s - loss: 1.3333 - acc: 0.2875
11/50000 [..............................] - ETA: 10389s - loss: 1.3195 - acc: 0.2784
12/50000 [..............................] - ETA: 10411s - loss: 1.3063 - acc: 0.2760
13/50000 [..............................] - ETA: 10360s - loss: 1.2896 - acc: 0.2788
14/50000 [..............................] - ETA: 10424s - loss: 1.2772 - acc: 0.2768
15/50000 [..............................] - ETA: 10464s - loss: 1.2660 - acc: 0.2750
16/50000 [..............................] - ETA: 10483s - loss: 1.2545 - acc: 0.2852
17/50000 [..............................] - ETA: 10557s - loss: 1.2446 - acc: 0.3015
似乎没有考虑 batch_size。你能说出为什么吗? 谢谢。
【问题讨论】:
标签: keras