1. 常用激活函数
2. tf.keras
2.1 创建学习模型
2.1.1 Sequential (顺序模型)
- 由多个网络层线性堆叠
- Load dataset (准备数据)
import tensorflow as tf
from tensorflow import keras
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()
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'])
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)