我正在使用Keras构建CNN,并将以下Conv1D作为我的第一层:
cnn.add(Conv1D(
filters=512,
kernel_size=3,
strides=2,
activation=hyperparameters["activation_fn"],
kernel_regularizer=getattr(regularizers, hyperparameters["regularization"])(hyperparameters["regularization_rate"]),
input_shape=(1000, 1),
))
我正在使用以下功能进行训练:
cnn.fit(
x=train_df["payload"].tolist(),
y=train_df["label"].tolist(),
batch_size=hyperparameters["batch_size"],
epochs=hyperparameters["epochs"],
)
其中train_df是两列的熊猫数据帧,其中每一行的label是一个int(0或1),有效载荷是一个浮点数的ndarray,其填充有零/被截断为1000。 train_df中的培训示例总数为15641。
模型可以编译,但是在训练过程中,出现此错误:
ValueError: Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 15641 arrays: [array([[0.09019608],
[0.01176471],
[0.01176471],
[0. ],
[0.30196078],
[0. ],
[0. ],
[0. ],
[0. ],
[0....
我查看了this post,并尝试将输入更改为长度为1000个浮点数的列表的ndarray,但最终出现了另一个错误:
ValueError: Error when checking input: expected conv1d_1_input to have 3 dimensions, but got array with shape (15641, 1000)
有什么想法吗?
答案 0 :(得分:0)
所以我将input_shape设置为(1000,1)
我还将输入到fit()的输入转换为n个ndarray的单个ndarray(每个ndarray是1000个float的向量,n是样本/向量的总数),并将每个ndarray整形为(1 ,1000、1)在阅读this输入和输入形状的解释后进行预处理
我输入数据的最终形状是(15641,1000,1)
**所有这些都应同样适用于验证数据(如果指定)**
编辑:对,我没有说明,但这解决了我的问题