用于LSTM的自定义数据生成器

时间:2019-03-17 19:50:38

标签: keras lstm data-generation

数据集:我有几个.csv文件,它们的形状(样本数为60,200),其中样本数可以变化。

LSTM模型:我有一个LSTM模型,可以接受形状的输入(60,200) 我正在尝试使数据生成器从这些.csv文件中获取数据并传递给LSTM。

但是我收到一个值错误:不支持任何值。

我得到3D形状的数组(批量大小为60200)。可能是什么错误
我正在调用该函数,如下所示:

model.fit_generator(gen_train,steps_per_epoch=739, validation_data=(gen_val), validation_steps=44,epochs=50)

其中739是我的训练数据的.csv文件数,而44是用于验证数据的.csv文件数。

数据生成器的代码如下:

使用输入文件名时间,标签。每个文件都有不同的编号。样本,因此我在每次迭代中将剩余的样本<32附加在先前文件的样本上,并附加新的样本。

def data_gen(time,label):
    print("in data generator")
    batch_size = 32
    temp_time=np.empty((0,60,200))
    temp_label=np.empty((0,1))
    while True:
        for j in range(len(time)):
        time_arr=np.loadtxt(time[j])
        time_arr=time_arr.reshape(-1,60,200)
               label_arr=np.loadtxt(label[j])
        label_arr=label_arr.reshape((-1,1))
        temp_time=np.vstack((temp_time,time_arr))
        temp_label=np.vstack((temp_label,label_arr))
        l=len(temp_time)
        i=0
        while(l>32):
            yield (temp_time[i:i+32], temp_label[i:i+32])
        i=i+32
        l=l-32
    temp_time=temp_time[i:i+l]
    temp_label=temp_label[i:i+l]

0 个答案:

没有答案