tf2.0使用tf.keras API 构建神经网络(基础)

tf2.0推荐的模型搭建方法是:

  1. 继承tf.keras.Model类,进行扩展以定义自己的新模型。
  2. 手工编写模型训练、评估模型的流程。

    (优点:灵活度高;与其他深度学习框架共通)


以CNN示例

<>

  1. class CNN(tf.keras.Model):
  2. def __init__(self):
  3. super().__init__()
  4. self.conv1 = tf.keras.layers.Conv2D(
  5. filters=32, # 卷积层神经元(卷积核)数目
  6. kernel_size=[5, 5], # 感受野大小
  7. padding='same', # padding策略(vaild 或 same)
  8. activation=tf.nn.relu # 激活函数
  9. )
  10. self.pool1 = tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2)
  11. self.conv2 = tf.keras.layers.Conv2D(
  12. filters=64,
  13. kernel_size=[5, 5],
  14. padding='same',
  15. activation=tf.nn.relu
  16. )
  17. self.pool2 = tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2)
  18. self.flatten = tf.keras.layers.Reshape(target_shape=(7 * 7 * 64,))
  19. self.dense1 = tf.keras.layers.Dense(units=1024, activation=tf.nn.relu)
  20. self.dense2 = tf.keras.layers.Dense(units=10)
  21. def call(self, inputs):
  22. x = self.conv1(inputs) # [batch_size, 28, 28, 32]
  23. x = self.pool1(x) # [batch_size, 14, 14, 32]
  24. x = self.conv2(x) # [batch_size, 14, 14, 64]
  25. x = self.pool2(x) # [batch_size, 7, 7, 64]
  26. x = self.flatten(x) # [batch_size, 7 * 7 * 64]
  27. x = self.dense1(x) # [batch_size, 1024]
  28. x = self.dense2(x) # [batch_size, 10]
  29. output = tf.nn.softmax(x)
  30. return output

猜你喜欢

转载自www.cnblogs.com/mx0813/p/12622765.html