Python 3.x Keras Conv1d输入股票数据的形状/参数

Python 3.x Keras Conv1d输入股票数据的形状/参数,python-3.x,tensorflow,keras,conv-neural-network,keras-layer,Python 3.x,Tensorflow,Keras,Conv Neural Network,Keras Layer,我正在尝试测试Keras 1DConv CNN,以帮助预测时间序列/股票数据。类似于N个股票的东西会有N个时间步的OHLCV数据。例如,对于N=1的股票,我试图只预测下一个时期的收盘价。比如说,使用一只股票,我有100个周期的OHLCV值,所以X.shape=(100,5),而y.shape=(100,1) 我正在尝试添加图层作为输入: model.add(Conv1D(filters=50, kernel_size=7,activation='relu', data_format='chann

我正在尝试测试Keras 1DConv CNN,以帮助预测时间序列/股票数据。类似于N个股票的东西会有N个时间步的OHLCV数据。例如,对于N=1的股票,我试图只预测下一个时期的收盘价。比如说,使用一只股票,我有100个周期的OHLCV值,所以X.shape=(100,5),而y.shape=(100,1)

我正在尝试添加图层作为输入:

model.add(Conv1D(filters=50, kernel_size=7,activation='relu', data_format='channels_last',input_shape=(100,5)))
但在输入形状(当我尝试拟合数据时)方面,我总是会遇到错误,要么是尺寸不正确,要么是以错误的顺序传递形状。我已经尝试重新调整数组的形状以添加额外的维度,但到目前为止没有任何效果。我应该如何格式化数据,如果您对此任务有任何其他建议,请告诉我:缩放、参数(丢失、优化器、激活、数据_格式)。频道如何在这方面发挥作用

干杯

model.fit(X_train, y_train, epochs=nb_epoch, validation_data=(X_test, y_test), batch_size=16)

ValueError: Error when checking target: expected conv1d_1 to have 3 dimensions, but got array with shape (100, 5)

Conv1D需要一个3D输入

您有一个2D输入

如果你像这样重塑

x = x.reshape(batch, steps, channels)
有关更多信息,请参阅

它应该会起作用


如果您想要更详细的答案,请添加代码的其余部分,以便更容易复制。

X的第一个轴(即序列数据)指的是样本或批次维度。因此,您需要重塑
X
,使其具有
(num\u样本、num\u步骤、num\u专长)
的形状,在您的情况下,这将是
(num\u样本,100,5)
。这同样适用于
y
(即标签)。此外,可能会帮助你们更好地理解一维卷积。谢谢你们,虽然我尝试了这两个建议,但仍然不起作用。我得到的印象可能是因为我有这个作为我的输入层。我使用了X_train=X_train。重塑(1,-1,5)以使其达到该形状。Keras一直抱怨我在重塑后正在馈送一个2D数组,例如,我将其重塑为(1100,5)和它的错误数组(100,1)。还尝试不输入参数,但仍然会产生相同的3D与2D错误。batch/samples参数,在本例中是否与N个库存一样?keras在获取输入的方式上是否缺少什么?即使运行非Conv1D层,我也不断遇到维度问题。回来是因为我让它工作了!我试图从Conv1d层开始,而不是从输入层开始。对于其他有同样问题的人,从输入层开始:
input\u layer=input(shape=(5,1))
->(OHLCV“channels”x 1 timestep,我相信)然后
conv\u layer=Conv1D(过滤器、内核大小等)
。此链接有助于:()<代码>分数=模型。评估(np.扩展dims(x_检验,轴=2),y_检验)还可以查看Packt实用时间序列分析以获得模型结构指南。不需要特定的输入层。在第一个Conv1D层中指定输入形状也应该有效。你确定你没有更改任何其他内容吗?您是否也对数据进行了重塑?