304 字
2 分钟
tensflow2.0系列-自动训练问题
**第一步:**首先构建神经网络模型,有如下方法:
1.tf.keras.Sequential([ ])方法:
1def MLP(input_shape):2 model = tf.keras.Sequential([3 tf.keras.layers.Dense(512, input_shape=input_shape),4 tf.keras.layers.BatchNormalization(),5 tf.keras.layers.Activation('relu'),6
7 tf.keras.layers.Dense(256),8 tf.keras.layers.BatchNormalization(),9 tf.keras.layers.Activation('relu'),10
11 tf.keras.layers.Dense(128),12 tf.keras.layers.BatchNormalization(),13 tf.keras.layers.Activation('relu'),14
15 tf.keras.layers.Dense(2),16 tf.keras.layers.BatchNormalization(),17 tf.keras.layers.Activation('sigmoid')18 ])19 return modeltf.keras.Model()方法:
1def MLP(input_dimension, output_bgs, model_name='Pretrain_MLP_P'):2 inputs = tf.keras.Input(shape=(input_dimension,))3 x = tf.keras.layers.Dense(1024)(inputs)4 x = tf.keras.layers.BatchNormalization()(x)5 x = tf.keras.layers.Activation("relu")(x)6
7 x = tf.keras.layers.Dense(512)(x)8 x = tf.keras.layers.BatchNormalization()(x)9 x = tf.keras.layers.Activation("relu")(x)10
11 x = tf.keras.layers.Dense(256)(x)12 x = tf.keras.layers.BatchNormalization()(x)13 x = tf.keras.layers.Activation("relu")(x)14
15 x = tf.keras.layers.Dense(256)(x)16 x = tf.keras.layers.BatchNormalization()(x)17 x = tf.keras.layers.Activation("relu")(x)18
19 x = tf.keras.layers.Dense(128)(x)20 x = tf.keras.layers.BatchNormalization()(x)21 x = tf.keras.layers.Activation("relu")(x)22
23 x = tf.keras.layers.Dense(64)(x)24 x = tf.keras.layers.BatchNormalization()(x)25 x = tf.keras.layers.Activation("relu")(x)26
27 x = tf.keras.layers.Dense(output_bgs)(x)28 x = tf.keras.layers.BatchNormalization()(x)29 outputs = tf.keras.layers.Activation("sigmoid")(x)30
31 model = tf.keras.Model(32 inputs=inputs,33 outputs=outputs,34 name=model_name35 )36 return model**第二步:**实例化神经网络模型并编译:
1model = MLP((5,))2 model.compile(3 optimizer=tf.keras.optimizers.Adam(1e-3),4 loss='mean_squared_error'5 )**第三步:**训练:
x与y分别是输入输出数据,validation_data是验证数据该选项可选,epochs是训练次数又叫迭代次数,batch_size是在epochs次数中可以分成n组,每组batch_size个,verbose是进度条,1是显示。
1history = model.fit(2 x=train_pm,3 y=train_bg,4 validation_data=(confirm_pm, confirm_bg),5 epochs=epochs,6 batch_size=epochs,7 verbose=18 )**可选:**自定义回调
示例为训练早停,监控'val_loss', 当在达到50 epoch之后且因为mode='min‘ 模式是最小,所以’val_loss' < 1e-6时restore_best_weights=True存储最佳模型参数权重,并停止训练。
1model.compile(2 optimizer=tf.keras.optimizers.Adam(1e-3),3 loss='mean_squared_error'4 )5 early_stopping = tf.keras.callbacks.EarlyStopping(6 monitor='val_loss',7 patience=50,8 min_delta=1e-6,9 mode='min',10 restore_best_weights=True,11 verbose=112 )13 model.fit(14 x=train_pm,15 y=train_bg,16 validation_data=[confirm_pm, confirm_bg],17 batch_size=batch_size,18 epochs=epochs,19 callbacks=[early_stopping],20 verbose=121 )部分信息可能已经过时