Keras 模型构建

介绍

Keras中构建 模型有两种方式,一种是通过Model类构建,一种是通过Sequential构建。前者类似对数据的pipline处理,后者侧重于模型的堆叠。

Model操作

tf.keras.Model
tf.keras.models.Model

Model 类提供了数据特征处理和模型训练的一些操作。在keras中构建model有两种方式,直接构建和通过定义一个子类构建。

  • 直接构建
import tensorflow as tf

inputs = tf.keras.Input(shape=(3,))
x = tf.keras.layers.Dense(4, activation=tf.nn.relu)(inputs)
outputs = tf.keras.layers.Dense(5, activation=tf.nn.softmax)(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)

首先需要定义一个layer的pipline ,然后通过传入输入输出参数进行构建。

  • 通过定义一个model class来构建
import tensorflow as tf

class MyModel(tf.keras.Model):

  def __init__(self):
    super(MyModel, self).__init__()
    self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
    self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)

  def call(self, inputs):
    x = self.dense1(inputs)
    return self.dense2(x)

model = MyModel()

在MyModel类init函数中初始化需要的网络层,然后实现一个前向传播函数,来定义传播方式;推荐使用这种方式进行构建,代码高度模块化,并且可以通过传递参数控制前向传播的执行逻辑。

import tensorflow as tf

class MyModel(tf.keras.Model):

  def __init__(self):
    super(MyModel, self).__init__()
    self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
    self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)
    self.dropout = tf.keras.layers.Dropout(0.5)

  def call(self, inputs, training=False):
    x = self.dense1(inputs)
    if training:
      x = self.dropout(x, training=training)
    return self.dense2(x)

model = MyModel()

Sequential操作

通过网络层堆叠构建模型

tf.keras.Sequential
tf.keras.models.Sequential
  • 我们定义了一个Sequential, 并添加两层
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(32, input_shape=(500,)))
model.add(tf.keras.layers.Dense(32))

你可能感兴趣的:(Keras 模型构建)