我正在尝试建立一个模型,根据当前市场状况预测某种商品的价格,我的数据形状类似于
num_samples = 100
sample_dimension = 10
XXX = np.random.random((num_samples,sample_dimension)).reshape(-1,1,sample_dimension)
YYY = np.random.random(num_samples).reshape(-1,1)
所以我有 100 个有序的 X 数据样本,每个样本包含 10 个变量。我的模型如下所示
model = keras.Sequential()
model.add(tf.keras.layers.Conv1D(4,
kernel_size = (2),
activation='sigmoid',
input_shape=(None, sample_dimension),
batch_input_shape = [1,1,sample_dimension]))
model.add(tf.keras.layers.AveragePooling1D(pool_size=2))
model.add(tf.keras.layers.Reshape((1, sample_dimension)))
model.add(tf.keras.layers.LSTM(100,
stateful = True,
return_sequences=False,
activation='sigmoid'))
model.add(keras.layers.Dense(1))
model.compile(optimizer='adam',
loss='mean_squared_error',
metrics=['accuracy'])
所以它是一个一维卷积、一个池化、一个重塑(所以它与 lstm 配合得很好),然后向下转换为一个预测
但是当我尝试运行它时,出现以下错误
输入形状为 [1,1,1,10], [1,2,10,4] 的“conv1d/conv1d”(操作:“Conv2D”)从 1 中减去 2 导致的负尺寸大小。
我已经为内核大小、池大小和 batch_input_shape 尝试了几个不同的值(必须批处理我的输入,因为我的实际数据分布在几个大文件中,所以我想一次读取一个并将它踢到训练模型),但似乎没有任何效果。
我究竟做错了什么?我如何跟踪/预测通过此模型的数据的形状?数据/变量应该是什么样的?