python - ValueError: Input 0 of layer dense_8 is in compatible with the layer: using tf.keras 2 CNNs to concatenate
问题描述
我正在尝试连接 2 个 CNN。这是代码:
input1 = keras.layers.Input(shape=(64,64,1), name="camera")
input2 = keras.layers.Input(shape=(64,64,1), name="lidar")
# First branch
input1_features = keras.layers.Lambda(lambda x: x / 255.0)(input1)
input1_features = keras.layers.Conv2D(16, (3, 3), strides=(4, 4), padding = 'same', activation='relu')(input1_features)
input1_features = keras.layers.Conv2D(32, (2, 2), strides=(2, 2), padding = 'same' ,activation='relu')(input1_features)
input1_features = keras.layers.Flatten()(input1_features)
# Second branch
input2_features = keras.layers.Lambda(lambda x: x / 255.0)(input2)
input2_features = keras.layers.Conv2D(16, (3, 3), strides=(4, 4), padding = 'same', activation='relu')(input2_features)
input2_features = keras.layers.Conv2D(32, (2, 2), strides=(2, 2), padding = 'same' ,activation='relu')(input2_features)
input2_features = keras.layers.Flatten()(input2_features)
merged = keras.layers.Concatenate(axis=1)([input1_features, input2_features])
hidden1 = keras.layers.Dense(128, activation='relu')(merged)
hidden2 = keras.layers.Dense(256, activation='relu')(hidden1)
output = keras.layers.Dense(action_space, activation='softmax', name="action")(hidden2)
nn = keras.models.Model([input1, input2], output)
nn.compile(loss={"camera" : "mse",
"lidar" : "mse"},
optimizer=Adam(lr=LEARNING_RATE))
ValueError:dense_4 层的输入 0 与该层不兼容:输入形状的预期轴 -1 具有值 4096,但接收到形状为 [32, 512] 的输入
这是预测的代码:
np.argmax(dqn.predict([camera,lidar]))
我已经仔细检查了两个图像的形状,它们是 (64,64,1)。
我正在尝试编写 aa nn,它将 2 个图像作为输入并输出 9 个动作之一。
我已经尝试过使用 Dense 中的所有参数,但我一无所获。这是模型的摘要:
解决方案
推荐阅读
- javascript - 有没有办法使用 Angular 将任何视频文件上传到 Dropbox?
- directory - 如何在 Code::Blocks 中有一个 Headers 文件夹?
- mysql - 如何让 Express 仅在返回 mysql 查询结果后呈现 HTML?
- npm - 如何将 npm-shrinkwrap.json 转换为 package-lock.json 文件?
- python - 执行退出块时, with open(...) 不会关闭我的文件
- javascript - 更新
- python - 为什么 tensorflow 会消耗这么多内存?
- python - Powershell 无法将 conda 识别为 cmdlet、函数或可运行程序
- node.js - Firebase init 抛出“在严格模式下使用 const”错误
- javascript - 如何使用 Object.create() 进行继承