本文介绍通过tf.keras.Model(inputs=input_x, outputs=pred_y),关系模型的输入、输出,建立任意模型结构的深度学习模型。
一、模型结构信息流图
二、导入依赖包
# coding: utf-8
import tensorflow as tf
from tensorflow.keras import layers
import numpy as np
import os
三、导入或者生成模型输入数据
#训练数据导入trin_in = np.random.random((500, 128))
trin_out = np.random.random((500, 13))
dataset = tf.data.Dataset.from_tensor_slices((trin_in, trin_out))
dataset = dataset.batch(100)
dataset = dataset.repeat()
#验证数据导入
val_in = np.random.random((200, 128))
val_out = np.random.random((200, 13))
val_dataset = tf.data.Dataset.from_tensor_slices((val_in, val_out))
val_dataset = val_dataset.batch(50)
val_dataset = val_dataset.repeat()
四、配置模型信息流结构
#配置模型样式input_x = tf.keras.Input(shape=(128,))
#正则化可选参数:regularizers.l1(0.03)、regularizers.l2(0.02)、#regularizers.l1_l2(l1=0.01, l2=0.04)
layer_1 = layers.Dense(384, activation='tanh',
kernel_initializer='RandomUniform',
kernel_regularizer=tf.keras.regularizers.l2(0.02),
bias_initializer="RandomNormal",
bias_regularizer=tf.keras.regularizers.l1(0.03),name='layer_1')(input_x)
layer_2 = layers.Dense(128, activation='elu', name='layer_2')(layer_1)
#任意网络图形,注意:维度
layer_3 = layers.Dense(64, activation='softplus',name='layer_3')(layer_2+input_x)
pred_y = layers.Dense(13, activation='softmax',
activity_regularizer=tf.keras.regularizers.l1(0.01),
kernel_initializer='GlorotUniform',
kernel_regularizer=tf.keras.regularizers.l1_l2(l1=0.01, l2=0.04),
bias_initializer="Ones",name='layer_out')(layer_3)
model = tf.keras.Model(inputs=input_x, outputs=pred_y)
五、配置tensorboard可视化
#配置tensorboard可视化logdir = 'tensorboardLogs'
if not os.path.exists(logdir):
os.mkdir(logdir)
output_model_file = os.path.join(logdir, "MySecondModel.h5")
callbacks = [
# 打开CMD密令窗口,输入:tensorboard --logdir "./tensorboardLogs"启动可视化网页
tf.keras.callbacks.TensorBoard(log_dir=logdir),# 定义TensorBoard对象
#模型保存配置
tf.keras.callbacks.ModelCheckpoint(output_model_file,save_best_only = True),
tf.keras.callbacks.EarlyStopping(patience=5, min_delta=1e-3),#模型提前停止条件
]
六、模型编译和训练
#模型编译model.compile(
optimizer=tf.keras.optimizers.RMSprop(0.05),#学习率loss=tf.keras.losses.categorical_crossentropy,metrics=['accuracy'])
#模型拟合
model.fit(dataset, epochs=5, steps_per_epoch=30,
validation_data=val_dataset, validation_steps=3,callbacks=callbacks)
七、训练打印信息
Train for 30 steps, validate for 3 steps
Epoch 1/5
2020-07-22 20:58:20.428441: Itensorflow/core/profiler/lib/profiler_session.cc:184] Profiler session started.
1/30 [>.............................]- ETA: 38s - loss: 25.6076 - accuracy: 0.0400
WARNING:tensorflow:Method (on_train_batch_end) is slow compared to thebatch update (0.111702). Check your callbacks.
2/30[=>............................] - ETA: 21s - loss: 113.4014 - accuracy:0.0750
13/30 [============>.................] - ETA: 2s - loss: 843009.6592 -accuracy: 0.0815
25/30 [========================>.....] - ETA: 0s - loss: 1638163.0178 -accuracy: 0.0824
30/30 [==============================] - 2s 69ms/step - loss: 1890052.1565- accuracy: 0.0840 - val_loss: 2783116.2500 - val_accuracy: 0.0667
Epoch 2/5
1/30[>.............................] - ETA: 0s - loss: 2688977.5000 - accuracy:0.0600
10/30 [=========>....................] - ETA: 0s - loss: 6145043.2250 -accuracy: 0.0690
22/30 [=====================>........] - ETA: 0s - loss: 6733185.3750 -accuracy: 0.0764
30/30 [==============================] - 0s 8ms/step - loss: 7063126.7583- accuracy: 0.0747 - val_loss: 11274707.6667 - val_accuracy: 0.0933
Epoch 3/5
1/30[>.............................] - ETA: 0s - loss: 11241677.0000 - accuracy:0.0900
10/30 [=========>....................] - ETA: 0s - loss: 12574605.9500- accuracy: 0.0670
21/30 [====================>.........] - ETA: 0s - loss: 13925799.1190- accuracy: 0.0714
30/30 [==============================] - 0s 7ms/step - loss: 14864912.3167- accuracy: 0.0723 - val_loss: 24675306.6667 - val_accuracy: 0.1200
Epoch 4/5
1/30 [>.............................]- ETA: 0s - loss: 24482984.0000 - accuracy: 0.0500
12/30 [===========>..................] - ETA: 0s - loss: 19740043.4167- accuracy: 0.0900
23/30 [======================>.......] - ETA: 0s - loss: 21752499.1739- accuracy: 0.0870
30/30 [==============================] - 0s 7ms/step - loss: 23650425.7000- accuracy: 0.0850 - val_loss: 29904261.3333 - val_accuracy: 0.0667
Epoch 5/5
1/30[>.............................] - ETA: 0s - loss: 29330360.0000 - accuracy:0.0600
12/30 [===========>..................] - ETA: 0s - loss: 31070796.6667- accuracy: 0.0592
16/30 [===============>..............] - ETA: 0s - loss: 32206105.0000- accuracy: 0.0637
24/30 [=======================>......] - ETA: 0s - loss: 32991959.0833- accuracy: 0.0729
30/30 [==============================] - 0s 12ms/step - loss:34828229.5333 - accuracy: 0.0740 - val_loss: 31032930.0000 - val_accuracy:0.0600
八、查看tensorboard可视化
在项目路径中输入cmd
九、查看可视化信息
在网页中输入http://localhost:6006/,建议使用360浏览器,反正我的火狐浏览器看不了profile。
十、模型预测
# coding: utf-8
import tensorflow as tf
import numpy as np
import os
#预测数据准备pre_in = np.random.random((10, 128))
logdir ='tensorboardLogs'
input_model = os.path.join(logdir, "MySecondModel.h5")
# 导入模型
model = tf.keras.models.load_model(input_model)
#预测
result = model.predict(pre_in, batch_size=32)
print(result)
十一、预测结果
[[0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0.0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0.0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0.0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0.0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0.0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0.0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0.0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0.0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0.0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]]
TensorFlow2第二篇测试用例到此结束~~~~~~~~~~
网友评论