感谢之前的问题回答,我可以再向前迈进一点。
但是在 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。我应该如何更明智地编码?
非常感谢您的大力帮助。提前致谢!