TensorFlow 2.0实战

1. 常用激活函数

2. tf.keras

2.1 创建学习模型

2.1.1 Sequential (顺序模型)

  • 由多个网络层线性堆叠
  • Load dataset (准备数据)
# TensorFlow and tf.keras
import tensorflow as tf
from tensorflow import keras

# Load dataset
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()

# Preprocess the data
train_images = train_images / 255.0
test_images = test_images / 255.0
  • Build the model (创建层并加入到model)
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28,28)),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(10, activation='softmax')
])
  • Compile the model (配置模型训练过程)
    • Loss function(损失函数):在训练期间,用于衡量模块的准确性,使用模型朝着此损失最小化的方向前进
    • Optimizer(优化方法):定义基于模型看到的数据及其损失函数来更新模型的方式
    • Metrics(指标):用于监视训练和测试过程的指标
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
  • Train the mode(训练模型)
model.fit(train_images, train_labels, epochs=10)
  • Evaluate accuracy (评估准确性)
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
  • Make predictions (预测数据类别)
predictions = model.predict(test_images)
print("\n The first test image:", predictions[0])
print("The fist test image label:", test_labels[0])

plt.figure()
plt.imshow(test_images[0])
plt.colorbar()
plt.grid(False)
plt.show()

2.1.2 Functional (函数模型)

  • 允许构建任意的神经网络图

2.2 网络层

2.2.1 tf.keras.layers.Flatten

  • 功能:把二维图像变为一维数组 (按行转换为一维数组)
  • 此层无学习参数,只是重新组织数据
  • 示例:
import tensorflow as tf
from tensorflow import keras
layer = keras.layers.Flatten(input_shape=(28, 28))

2.2.2 tf.keras.layers.Dense

  • 功能:全连接层, output = activation(dot(input, kernel) + bias)
    • kernel: 是本层待学习的权重矩阵参数
    • bias:是本层待学习的偏移向量
  • 参数
    • units: 定义本层输出的节点数(nodes)或神经元数(neurons)
    • activation: 定义本层的激活函数 ,若不指定,则为:a(X) = X
    • use_bias: Boolean, 定义本层使用使用偏移量
    • kernel_initializer: 待学习的权重矩阵的初始化方法(字符串)
    • bias_initializer: 待学习的偏移向量的初始化方法(字符串)
    • kernel_regularizer: 应用于权重矩阵的正则化函数
    • bias_regularizer: 应用于偏移向量的正则化函数
    • activity_regularizer: 应用于输出层 (its “activation”)的正则化函数
    • kernel_constraint:应用于权重矩阵的约束函数
    • bias_constraint: 应用于偏移向量的约束函数
  • 默认初始值
def __init__(self,
             units,
             activation=None,
             use_bias=True,
             kernel_initializer='glorot_uniform',
             bias_initializer='zeros',
             kernel_regularizer=None,
             bias_regularizer=None,
             activity_regularizer=None,
             kernel_constraint=None,
             bias_constraint=None,
             **kwargs):
    if 'input_shape' not in kwargs and 'input_dim' in kwargs:
      kwargs['input_shape'] = (kwargs.pop('input_dim'),)

    super(Dense, self).__init__(
        activity_regularizer=regularizers.get(activity_regularizer), **kwargs)
    self.units = int(units)
    self.activation = activations.get(activation)
    self.use_bias = use_bias
    self.kernel_initializer = initializers.get(kernel_initializer)
    self.bias_initializer = initializers.get(bias_initializer)
    self.kernel_regularizer = regularizers.get(kernel_regularizer)
    self.bias_regularizer = regularizers.get(bias_regularizer)
    self.kernel_constraint = constraints.get(kernel_constraint)
    self.bias_constraint = constraints.get(bias_constraint)

    self.supports_masking = True
    self.input_spec = InputSpec(min_ndim=2)

你可能感兴趣的:(TensorFlow)