inputs = layers.Input(shape=input_shape)
# Layer 1
x = layers.Conv2D(128, (11, 11), strides=(4, 4), activation='relu',
kernel_initializer=tf.random_normal_initializer(mean=0.0, stddev=0.01),
kernel_regularizer=regularizers.l2(lr),
padding='same')(inputs)
x = layers.BatchNormalization()(x)
x = layers.MaxPooling2D(pool_size=(3, 3), strides=(2, 2))(x)
# Layer 2
x = layers.Conv2D(256, (5, 5), activation='relu',
kernel_initializer=tf.random_normal_initializer(mean=0.0, stddev=0.01),
kernel_regularizer=regularizers.l2(lr), padding='same')(x)
x = layers.BatchNormalization()(x)
x = layers.MaxPooling2D(pool_size=(3, 3), strides=(2, 2))(x)
# Layer 3
x = layers.Conv2D(512, (3, 3), activation='relu',
kernel_initializer=tf.random_normal_initializer(mean=0.0, stddev=0.01),
kernel_regularizer=regularizers.l2(lr), padding='same')(x)
x = layers.BatchNormalization()(x)
# Layer 4
x = layers.Conv2D(512, (3, 3), activation='relu',
kernel_initializer=tf.random_normal_initializer(mean=0.0, stddev=0.01),
kernel_regularizer=regularizers.l2(lr), padding='same')(x)
x = layers.BatchNormalization()(x)
# Layer 5
x = layers.Conv2D(512, (3, 3), activation='relu',
kernel_initializer=tf.random_normal_initializer(mean=0.0, stddev=0.01),
kernel_regularizer=regularizers.l2(lr), padding='same')(x)
x = layers.BatchNormalization()(x)
x = layers.MaxPooling2D(pool_size=(3, 3), strides=(2, 2))(x)
# Layer 6
x = layers.Flatten()(x)
x = layers.Dense(4096, activation='relu')(x)
x = layers.BatchNormalization()(x)
x = layers.Dropout(0.5)(x)
# Layer 7
x = layers.Dense(2048, activation='relu')(x)
x = layers.BatchNormalization()(x)
x = layers.Dropout(0.5)(x)
# Layer 8
x = layers.Dense(1024, activation='relu')(x)
x = layers.BatchNormalization()(x)
x = layers.Dropout(0.5)(x)
# Layer 9
x = layers.Dense(512, activation='relu')(x)
x = layers.BatchNormalization()(x)
x = layers.Dropout(0.5)(x)
# Output layer
outputs = layers.Dense(num_classes, activation='linear')(x)
# Model instantiation
model = Model(inputs=inputs, outputs=outputs)
optimizer = optimizers.Nadam(learning_rate=learning_rate)
alex2.compile(optimizer=optimizer, loss='mse', metrics=['mae',r_squared])
alex2_history = alex2.fit(X_train, y_train,epochs=n_epochs, validation_data=(X_val,y_val),
batch_size=32)
这是我的模型,以图像(单通道)作为输入和 14 个连续数字。
接下来是训练的结果。 (损失(MSE),MAE,r平方)
有很多问题
训练好像不太好
也许我的模型结构有误?
我尝试将图像转换为数字并尝试了 DNN,结果如下。(损失(MSE)、MAE、r-squared)
我使模型变得复杂以使其过拟合并且似乎有足够好的结果。
我应该使用哪一个?
有没有更好的回归器结构?