TensorFlow2-通过KerasModel创建模型

本文介绍通过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第二篇测试用例到此结束~~~~~~~~~~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353