1
从我使用keras的fit_generator
函数中的自定义生成函数返回。与keras`fit_generator()外形问题`我有与numpy的阵列的形状,一个看似简单的问题
发电机功能类似于此:
def data_generator(full_data, encoder):
for s in full_data:
in1_X = encoder.encode(s[:,0])
in2_X = encoder.encode(s[:,1])
out1_y = encoder.encode(s[:,2])
out2_y = encoder.encode(s[:,3])
X = [in1_X, in2_X]
y = [out1_y, out2_y]
yield (X,y)
我可以通过使用for循环和打印的形状,这只是返回(60,)
然而,在调用这个时候得到in1_X返回的形状使用fit_generator()
功能,它失败:
train_data_gen = data_generator(full_data, encoder)
main_in = Input(shape=(seq_len,), name='main_input')
# ...
# define model
# ...
joint_model.fit_generator(train_data_gen, steps_per_epoch=2000, epochs=2)
从其中输出是这样的:
Error when checking input:
expected main_input to have shape (None, 60) but got array with shape (60, 1)
我怎样才能得到这个不改变形状(60,)
numpy阵列形状(60, 1)
?其他人遇到过这个问题吗?
昂贵的管道胶带是变平。 in1_x = in1_x.flatten()等等,因为你的编码器似乎返回一个二维数组。 – Uvar
我们正面临同样的问题。扁平化并没有什么区别 - 它提供了与未扁平化相同的形状。根据我们的经验,我们调用发电机和评估形状,并收到预期的一个:X,Y = my_generator.next() 打印( “下一个[X]:{}”。格式(x.shape))#形状(517,)在我们的例子中,但是当喂食时,我们得到错误“期望的main_input有形状(无,517),但有形状的数组(517,1)” – kekec