我现在有一个大小的图片数据(419,128,128),这是419张图片,每张图片是128*128.我想建立一个CNN模型做一个特征选择.(附言提取128重要特征,从每张图片)这是我的代码:
import tensorflow as tf
# shape of input data
input_shape = (None, 128, 128, 1)
# Define the CNN model
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(128, 3, activation='relu', padding='same', input_shape=input_shape[1:]),
tf.keras.layers.Conv2D(128, 4, activation='relu', padding='same'),
tf.keras.layers.Conv2D(128, 5, activation='relu', padding='same'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
# Output layer, since we need to extract 128 important factors, the number of output nodes is 128
tf.keras.layers.Dense(128, activation='sigmoid')
])
# Compile the model
model.compile(optimizer='adam', loss='mse')
# My input data is sp_pics, shape is (419,128,128)
data_input = np.expand_dims(sp_pics, axis=-1)
# Train the model
model.fit(data, data, epochs=10, batch_size=32)
# Extract the important factors
important_factors = model.predict(data)
现在,我收到以下错误消息:
就我而言,错误是由输入(419,128,128)和输出(419,128)之间的形状差异引起的。这是真的吗?我该如何修复它?
非常感谢你的帮助!!!
我试了不同的批量和不同的损失函数,但没有用
1条答案
按热度按时间elcex8rz1#
model.fit
的前两个参数是x
和y
,其中x
是输入,y
是标签。您使用的是model.fit(data, data,...)
,因此您的输入也是您的...标签?