TensorFlow2.0快速构建模型

TensorFlow2.0快速构建模型


主要介绍如何快速构建一个模型并进行训练,重点在于模型构建流程的讲解,其中所用到的API可以通过头文件、官网查询其功能,参数,输入与输出数据

简单堆叠模型

  • model = tf.keras.Sequential(),可理解为实例化一个用于构建模型的类,我们可以通过add()的方式向其内部添加网络层,这些网络层就等价于类中的成员与方法
# 实例化一个堆叠模型
model = tf.keras.Sequential()
# 构建模型的网络层结构
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
  • 设置训练流程,调用compile()方法,对优化器,损失函数,性能指标进行配置
model.compile(optimizer=tf.keras.optimizers.Adam(0.001),
             loss=tf.keras.losses.categorical_crossentropy,
             metrics=[tf.keras.metrics.categorical_accuracy])
  • 训练网络,调用fit()方法,送入数据对模型进行训练
import numpy as np
import tensorflow as tf
from tensorflow.keras import layers

model = tf.keras.Sequential()
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
model.compile(optimizer=tf.keras.optimizers.Adam(0.001),
             loss=tf.keras.losses.categorical_crossentropy,
             metrics=[tf.keras.metrics.categorical_accuracy])

train_x = np.random.random((1000, 72))
train_y = np.random.random((1000, 10))

val_x = np.random.random((200, 72))
val_y = np.random.random((200, 10))

model.fit(train_x, train_y, epochs=1000, batch_size=100,
          validation_data=(val_x, val_y))

函数式构建模型

tf.keras.Sequential()属于简单模型的堆叠,无法完成复杂模型的构建(多输入、多输出模型、包含共享层的模型、残差结构的模型),因此通过函数式API构建模型

  • 定义模型的输入,网络中间层,模型的输出;相比于堆叠模型add()方法的方式,该方式构建模型更灵活
# 输入数据的维度需提前指定,并且数据维度需保持与定义一致
input_x = tf.keras.Input(shape=(72,))
hidden1 = layers.Dense(32, activation="relu")(input_x)
hidden2 = layers.Dense(16, activation="relu")(hidden1)
pred = layers.Dense(10, activation="softmax")(hidden2)
  • 调用tf.keras.Model()方法构建模型,只需要写入输入与输出
model = tf.keras.Model(inputs=input_x, outputs=pred)
  • 设置训练流程,训练网络与上部分构建堆叠模型一致
import numpy as np
import tensorflow as tf
from tensorflow.keras import layers

input_x = tf.keras.Input(shape=(72,))
hidden1 = layers.Dense(32, activation="relu")(input_x)
hidden2 = layers.Dense(16, activation="relu")(hidden1)
pred = layers.Dense(10, activation="softmax")(hidden2)

model = tf.keras.Model(inputs=input_x, outputs=pred)
model.compile(optimizer=tf.keras.optimizers.Adam(0.001),
             loss=tf.keras.losses.categorical_crossentropy,
             metrics=['accuracy'])

train_x = np.random.random((1000, 72))
train_y = np.random.random((1000, 10))

val_x = np.random.random((200, 72))
val_y = np.random.random((200, 10))

model.fit(train_x, train_y, epochs=1000, batch_size=100,
          validation_data=(val_x, val_y))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值