1.下载并安装 TensorFlow 2.0 测试版包。将 TensorFlow 载入你的程序
# 安装 TensorFlow
import tensorflow as tf
2.载入并准备好 MNIST 数据集。将样本从整数转换为浮点数
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
#mnist数据集保存为RGB值,/255.0进行归一化,将数据保存在0-1之间,将整数转化成浮点数
x_train, x_test = x_train / 255.0, x_test / 255.0
3.将模型的各层堆叠起来,以搭建 tf.keras.Sequential
模型
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
tf.keras.layers.Flatten 使输入展平,不会影响批处理的大小。如果输入形状为(batch,),没有特征轴,则展平会增加额外的通道尺寸,输出形状为(batch,1)。
tf.keras.layers.Dense(
inputs=64, # 输入该网络层的数据
units=10, # 输出的维度大小
activation=None, # 选择使用的(激活函数)
use_bias=True, # 是否使用(偏置项)
kernel_initializer=None, # 卷积核的初始化器
bias_initializer=tf.zeros_initializer(), # 偏置项的初始化器
kernel_regularizer=None, # 卷积核的正则化
activaty_regularizer=None, # 偏置项的正则化
kernel_constraint=None, # 对主权重矩阵进行约束
bias_constraint=None, # 对偏置向量进行约束
trainable=True, # 可以设置为不可训练,(冻结)网络层
name=None, # 层的名字
reuse=None # 是否重复使用参数
)
tf.keras.layers.Dropout(
rate,0~1之间的小数。让神经元以一定的概率rate停止工作,提高模型的泛化能力。
noise_shape=None,1D张量类型,int32表示将与输入相乘的二进制丢失掩码的形状;
seed=None, 随机种子
)
4.为训练选择优化器和损失函数
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
tensorflow中model.compile()用法
model.compile()方法用于在配置训练方法时,告知训练时用的优化器、损失函数和准确率评测标准
model.compile(
optimizer = 优化器,例如:sgd,sdagrad,adadelta,adam
loss = 损失函数,例如:mse,sparse_categorical_crossentropy
metrics = 准确率,例如:accuracy,sparse_accuracy(独热编码),sparse_categorical_accuracy
)
5.训练并验证模型
model.fit(x_train, y_train, epochs=5)
使用model.fit()方法来执行训练过程
model.fit(
x_train, y_train, #告知训练集的输入以及标签,
batch_size = 32, #每一批batch的大小为32,
epochs = 500, #迭代次数epochs为500
validation_split = 0.2, #从测试集中划分80%给训练集
validation_freq = 20 #测试的间隔次数为20
verbose:日志显示,0为不在标准输出流输出日志信息,1为输出进度条记录,2为每个epoch输出一行记录
)
6.评估模型
model.evaluate(x_test, y_test, verbose=2)
model.evaluate:输入数据和标签,输出损失和精确度.
model.predict:输入测试数据,输出预测结果(通常用在需要得到预测结果的时候)
附:完整代码
# 安装 TensorFlow
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
#mnist数据集保存为RGB值,/255.0进行归一化,将数据保存在0-1之间,将整数转化成浮点数
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)