alexnet,dnn 培训问题。需要建议

问题描述 投票:0回答:0
   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平方)

有很多问题

  1. 训练好像不太好

  2. 也许我的模型结构有误?

我尝试将图像转换为数字并尝试了 DNN,结果如下。(损失(MSE)、MAE、r-squared)

我使模型变得复杂以使其过拟合并且似乎有足够好的结果。

我应该使用哪一个?

有没有更好的回归器结构?

deep-learning conv-neural-network regression
© www.soinside.com 2019 - 2024. All rights reserved.