文章目录
pip
-
pip 镜像
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas
Tensorflow 2.1.0
tf.keras
Keras 简介
Keras是一个用于构建和训练深度学习模型的高级API。 它用于快速原型设计,高级研究和生产,具有三个主要优点:
用户友好
Keras具有针对常见用例优化的简单,一致的界面。 它为用户错误提供清晰且可操作的反馈。
模块化和可组合
Keras模型是通过将可配置的构建块连接在一起而制定的,几乎没有限制。
易于扩展
编写自定义构建块以表达研究的新想法。 创建新图层,损失函数并开发最先进的模型。
- 导入 tf.keras
import tensorflow as tf
from tensorflow import keras
- 构建一个简单的模型
2.1 Sequential model
在Keras中,您可以组装图层来构建模型。 模型(通常)是图层图。 最常见的模型类型是一堆层:tf.keras.Sequential 模型。
构建一个简单的全连接网络(即多层感知器):
model = keras.Sequential()
model.add(keras.layers.Dense(64, activation='relu'))
model.add(keras.layers.Dense(64, activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))
2.2 Configure the layers
在 tf.keras.layers 中有很多层,下面是一些通用的构造函数的参数:
activation
:设置层的激活函数。 此参数由内置函数的名称或可调用对象指定。 默认情况下,不应用任何激活。
kernel_initializer
和 bias_initializer
:设置层创建时,权重和偏差的初始化方法。指定方法:名称 或 可调用对象。默认为"Glorot uniform" initializer。
kernel_regularizer
和 bias_regularizer
:设置层的权重、偏差的正则化方法。比如:L1 或 L2 正则。默认为空。
以下实例化tf.keras。 layers.Dense图层使用构造函数参数:
layers.Dense(64, activation='sigmoid')
layers.Dense(64, activation=tf.sigmoid)
layers.Dense(64, kernel_regularizer=keras.regularizers.l1(0.01))
layers.Dense(64, bias_regularizer=keras.regularizers.l2(0.01))
layers.Dense(64, kernel_initializer='orthogonal')
layers.Dense(64, bias_initializer=keras.initializers.constant(2.0))
- Train and evaluate
3.1 Set up training
构建模型后,通过调用compile方法配置其训练过程:
model.compile(optimizer=tf.train.AdamOptimizer(0.001),
loss='categorical_crossentropy',
metrics=['accuracy'])
tf.keras.Model.compile有三个重要参数:
optimizer
:训练过程的优化方法。此参数通过 tf.train 模块的优化方法的实例来指定,比如:AdamOptimizer, RMSPropOptimizer, GradientDescentOptimizer。
loss
:训练过程中使用的损失函数(通过最小化损失函数来训练模型)。 常见的选择包括:均方误差(mse),categorical_crossentropy和binary_crossentropy。 损失函数由名称或通过从tf.keras.losses模块传递可调用对象来指定。
metrics
:训练过程中,监测的指标(Used to monitor training)。
指定方法:名称 或 可调用对象 from the tf.keras.metrics 模块。
以下显示了配置培训模型的几个示例:
# Configure a model for mean-squared error regression.
model.compile(optimizer=tf.train.AdamOptimizer(0.01),
loss='mse', # mean squared error
metrics=['mae']) # mean absolute error
# Configure a model for categorical classification.
model.compile(optimizer=tf.train.RMSPropOptimizer(0.01),
loss=keras.losses.categorical_crossentropy,
metrics=[keras.metrics.categorical_accuracy])
3.2 Input NumPy data
对于小的数据集,可以直接使用 NumPy 格式的数据进行训练、评估模型。模型使用 fit 方法训练数据:
import numpy as np
data = np.random.random((1000, 32))
labels = np.random.random((1000, 10))
model.fit(data, labels, epochs=10, batch_size=32)
tf.keras.Model.fit 有三个重要的参数:
epochs
:训练多少轮。(小批量)
batch_size
:当传递NumPy数据时,模型将数据分成较小的批次,并在训练期间迭代这些批次。 此整数指定每个批次的大小。 请注意,如果样本总数不能被批量大小整除,则最后一批可能会更小。
validation_data
:在对模型进行原型设计时,您希望轻松监控其在某些验证数据上的性能。 传递这个参数 - 输入和标签的元组 - 允许模型在每个epoch的末尾以传递数据的推理模式显示损失和度量。
这是使用validation_data的示例:
import numpy as np
data = np.random.random((1000, 32))
labels = np.random.random((1000, 10))
val_data = np.random.random((100, 32))
val_labels = np.random.random((100, 10))
model.fit(data, labels, epochs=10, batch_size=32,
validation_data=(val_data, val_labels))
3.3 Input tf.data datasets
使用数据集API可扩展到大型数据集或多设备培训。 将tf.data.Dataset实例传递给fit方法:
使用 Datasets API 可扩展到大型数据集或多设备训练。 给 fit 方法传递一个 tf.data.Dataset 实例:
# Instantiates a toy dataset instance:
dataset = tf.data.Dataset.from_tensor_slices((data, labels))
dataset = dataset.batch(32)
dataset = dataset.repeat()
# Don't forget to specify `steps_per_epoch` when calling `fit` on a dataset.
model.fit