gpt4 book ai didi

python - 为序列 InvalidArgument 构建/训练 1D CNN

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:45 25 4
gpt4 key购买 nike

我正在为序列构建和训练 CNN,并且已经成功使用 RNN,但遇到了 CNN 的问题。这是代码,cnn1 是第一个(更复杂的模型),尝试使用一个更简单的模型来适应并在两者上都出现错误:

形状如下:

xtrain (5206, 19, 4)
ytrain (5206, 4)
xvalid (651, 19, 4)
yvalid (651, 4)
xtest (651, 19, 4)
ytest (651, 4)

我已经尝试了我能想到的几乎所有内核大小和节点的组合,尝试了 2 种不同的模型构建。

    model_cnn1.add(keras.layers.Conv1D(32, (4), activation='relu'))
model_cnn1.add(keras.layers.MaxPooling1D((4)))
model_cnn1.add(keras.layers.Conv1D(32, (4), activation='relu'))
model_cnn1.add(keras.layers.MaxPooling1D((4)))
model_cnn1.add(keras.layers.Conv1D(32, (4), activation='relu'))
model_cnn1.add(keras.layers.Dense(4))


model_cnn2 = keras.models.Sequential([
keras.layers.Conv1D(100,(4),input_shape=(19,4),activation='relu'),
keras.layers.MaxPooling1D(4),
keras.layers.Dense(4)
])


model_cnn2.compile(loss='mse',optimizer='adam',metrics= ['mse','accuracy'])

model_cnn2.fit(X_train_tf,y_train_tf,epochs=25)

输出是 1/25 epoch,未完全运行,然后在 cnn1 上我收到一些变化(最后一行):

ValueError: Negative dimension size caused by subtracting 4 from 1 for 'max_pooling1d_26/MaxPool' (op: 'MaxPool') with input shapes: [?,1,1,32]

在 cnn2 (更简单)上我收到错误(最后一行):

InvalidArgumentError: Incompatible shapes: [32,4,4] vs. [32,4]
[[{{node metrics_6/mse/SquaredDifference}}]] [Op:__inference_keras_scratch_graph_6917]

一般来说,对于内核/节点/等,我应该遵循一些规则吗?我似乎总是在形状上遇到这些错误。我希望在构建每种类型的模型后,我能理解其来龙去脉——没有双关语——但这让我发疯!

我尝试了每种组合

最佳答案

您可以阅读 Conv1DMaxPooling1D 的文档,了解这些层根据 strides 的值更改输出形状>。在您的情况下,您可以通过指定填充来保持 Conv1D 的输出形状相等。 MaxPooling1D 根据定义更改输出形状。使用 strides = 4 时,输出形状实际上会小 4 倍。我建议仔细阅读文档以弄清楚究竟发生了什么,并了解 CNN 的基本理论以了解为什么会发生这种情况。

关于python - 为序列 InvalidArgument 构建/训练 1D CNN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56092519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com