Keras 中 Dense 层的形状不兼容

时间:2021-04-29 19:56:37

标签: keras

感谢之前的问题回答,我可以再向前迈进一点。

但是在 Dense 层还有另一个问题。

stage2_model = tf.keras.Sequential([tf.keras.Input(shape=(208,))])
stage2_model.add(tf.keras.layers.Dense(256, activation="relu"))
stage2_model.add(tf.keras.layers.Dropout(0.3))
stage2_model.add(tf.keras.layers.Dense(128, activation="relu"))
stage2_model.add(tf.keras.layers.Dropout(0.3))
stage2_model.add(tf.keras.layers.Dense(64, activation="relu"))
stage2_model.add(tf.keras.layers.Dropout(0.3))
stage2_model.add(tf.keras.layers.Dense(32, activation="relu"))
stage2_model.add(tf.keras.layers.Dropout(0.3))
stage2_model.add(tf.keras.layers.Dense(16, activation="relu"))
stage2_model.layers[-1].set_weights([z_weights, z_bias])
stage2_model.layers[-1].trainable = False
stage2_model.compile(optimizer='adam', loss='mse', metrics=['accuracy'])
stage2_model.summary()

错误结果如下;

ValueError: Layer weight shape (32, 16) not compatible with provided weight shape (16, 16)

正如你在上面的代码所看到的,我想做一个像

这样的模型形状 <块引用>

输入:208×1

<块引用>

层:256×1 → 128×1 → 64×1 → 32×1 → 16×1(这个 16×1 是不可训练的)

stage2_model 的最后一层是预训练层,如代码所示,其他层必须经过训练。

我想直接通过 32 个神经元层到 16 层,其中 32 个是可训练的,16 个是不可训练的,并且有自己的权重(内核大小:16×16,偏差:16)。

我不知道能不能熬过去。

还有一个问题!

这个模型输入的形状是208,形状设置为(# of data, 208, 1)。

此数据只能进行TRANSPOSE,其他数据不可用(例如reshape)

它也给出了一个错误

stage2_model.fit(V_diff, epochs=1, batch_size=36)

它不适合输入尺寸形状 (36, 208, 1) .

数据集的总数是 576,所以我将批次的大小设置为 36。我应该如何更明智地编码?

非常感谢您的大力帮助。提前致谢!

0 个答案:

没有答案