我正在尝试开发Keras LSTM代码。我有输入数据代表音频功能,就像那样。
训练项目[210969]
特征向量[40]
批量大小[256]
数据示例
[[ - 1.66514225 -0.44892017 0.24430933 ..., - 0.96550658 -1.3456034 -1.76591301] [-1.79528513 -1.68822871 0.05168475 ..., - 0.23602946 -0.26985581 -0.0951985] [-0.09728797 -1.27619953 -1.48452426 ..., - 1.11481965 -0.22158974 -1.10055417]]
在我的Python代码中,我使用了Keras库。我尝试构建LSTM图层。我正在使用input_shape,但我无法使用。我尝试将输入数据从2维重塑为3维。你可以看到适合的功能。
.........
elif classname == 'LSTM':
layer_setup['config']['input_shape'] = (210969,40)
............
..........
model.fit(
x=X_training.reshape(256,X_training.shape[0],X_training.shape[1]),
y=Y_training.reshape(256,Y_training.shape[0],Y_training.shape[1]),
batch_size=256,
epochs=500,
validation=validationdata,
verbose=0,
shuffle=true,
callbacks=callbacks,
class_weight=class_weight
)
我在运行代码时遇到了错误
无法将大小为8438760的数组重塑为形状(256,210969,40)
我该怎么办?感谢
答案 0 :(得分:0)
我认为您应该在模型创建之外重塑数据,因为这样一来,您将尝试从大小为256 * 210969 * 40
的向量创建8438760
的向量。我认为您实现自己想要的方式是这样的:
X = X_training.reshape((layer_setup['config']['input_shape'])) # now X.shape = 210969 * 40
y = Y_training.reshape((Y_training.shape[0],Y_training.shape[1]))
...
model.fit(
x = X,
y = y,
batch_size=256,
epochs=500,
validation=validationdata,
verbose=0,
shuffle=true,
callbacks=callbacks,
class_weight=class_weight
)