LOADING
304 字
2 分钟
tensflow2.0系列-自动训练问题
2026-08-22
2026-08-22

**第一步:**首先构建神经网络模型,有如下方法:

1.tf.keras.Sequential([ ])方法:

def MLP(input_shape):
model = tf.keras.Sequential([
tf.keras.layers.Dense(512, input_shape=input_shape),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Activation('relu'),
tf.keras.layers.Dense(256),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Activation('relu'),
tf.keras.layers.Dense(128),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Activation('relu'),
tf.keras.layers.Dense(2),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Activation('sigmoid')
])
return model
  1. tf.keras.Model()方法:
def MLP(input_dimension, output_bgs, model_name='Pretrain_MLP_P'):
inputs = tf.keras.Input(shape=(input_dimension,))
x = tf.keras.layers.Dense(1024)(inputs)
x = tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation("relu")(x)
x = tf.keras.layers.Dense(512)(x)
x = tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation("relu")(x)
x = tf.keras.layers.Dense(256)(x)
x = tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation("relu")(x)
x = tf.keras.layers.Dense(256)(x)
x = tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation("relu")(x)
x = tf.keras.layers.Dense(128)(x)
x = tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation("relu")(x)
x = tf.keras.layers.Dense(64)(x)
x = tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation("relu")(x)
x = tf.keras.layers.Dense(output_bgs)(x)
x = tf.keras.layers.BatchNormalization()(x)
outputs = tf.keras.layers.Activation("sigmoid")(x)
model = tf.keras.Model(
inputs=inputs,
outputs=outputs,
name=model_name
)
return model

**第二步:**实例化神经网络模型并编译:

model = MLP((5,))
model.compile(
optimizer=tf.keras.optimizers.Adam(1e-3),
loss='mean_squared_error'
)

**第三步:**训练:

x与y分别是输入输出数据,validation_data是验证数据该选项可选,epochs是训练次数又叫迭代次数,batch_size是在epochs次数中可以分成n组,每组batch_size个,verbose是进度条,1是显示。

history = model.fit(
x=train_pm,
y=train_bg,
validation_data=(confirm_pm, confirm_bg),
epochs=epochs,
batch_size=epochs,
verbose=1
)

**可选:**自定义回调

示例为训练早停,监控'val_loss', 当在达到50 epoch之后且因为mode='min‘ 模式是最小,所以’val_loss' < 1e-6时restore_best_weights=True存储最佳模型参数权重,并停止训练。

model.compile(
optimizer=tf.keras.optimizers.Adam(1e-3),
loss='mean_squared_error'
)
early_stopping = tf.keras.callbacks.EarlyStopping(
monitor='val_loss',
patience=50,
min_delta=1e-6,
mode='min',
restore_best_weights=True,
verbose=1
)
model.fit(
x=train_pm,
y=train_bg,
validation_data=[confirm_pm, confirm_bg],
batch_size=batch_size,
epochs=epochs,
callbacks=[early_stopping],
verbose=1
)
tensflow2.0系列-自动训练问题
/posts/tensflow2-0系列-自动训练系列/
作者
IsaJerry
发布于
2026-08-22
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时