目录
1.导入包
2.预处理数据集
3.配置网络结构
4.配置优化器
5.训练
6.展示
7.拓展应用
8.实例代码
1.导入
import tensorflow as tf
2.预处理数据集
输入的数据不可能完全符合我们的要求,所以要进行数据预处理
常用的处理有:随机选择数据集,图像格式处理,音频格式处理
转化为数组形式才可能被训练。
处理函数总结连接如下:
3.配置网络结构
有两种配置方法:
1.函数参数生成(简单网络,应用此种)
2.类生成(当网络复杂使,建议使用此种)
函数生成
model = tf.keras.models.Sequential([网络结构])
常用的网络结构有:
拉直层:把输入特征拉直变成一维数组
tf.keras.layers.Flatten() # 拉直层
全连接层:
tf.keras.layers.Dense(神经元个数,
activation='激活函数',
kernel_regularizer=正则化方法)# 全连接层
激活函数可选: relu softmax sigmoid tanh
正则化方法可选:L1 L2
(各种激活函数与正则化分析(链接待补充))
二维卷积层:
tf.keras.layers.Conv2D(filters=卷积核个数,
kernel_size=卷积核尺寸,
strides=卷积步长,
padding="valid"or"same")# 卷积神经网络层
循环网络层:
tf.keras.layers.LSTM()# 循环神经网络层
类生成
calss MyModel(Model):
def __init__(self):
super(MyModel, self).__init__()
定义网络结构
def call(self, x):
调用结构
return y
model = MyModel()
4.配置优化器
model.compile(optimizer=优化器, loss=损失函数, metrics=['准确率'])
优化器(参数更新的工具)可选:
sgd adagrad adadelta adam字符串形式
或以函数形式给出(函数形式可以设置学习率和动量参数,不建议入门时使用)
详解:五种优化器的对比(链接待补充)
损失函数可选:
mse sparse_categorical_crossrntropy 字符串形式
或者以函数形式给出
详解:损失函数分析(链接待补充)
准确率可选:
accuracy 真实值与与测试都为数值
categorical_accuracy 都为独热码
sparse_categorical_accuracy 预测值独热码 真实值为数值
5.训练
model.fit(训练集输入特征, 训练集标签,
batch_size=每次喂入网络的大小,
epochs=训练次数,
validation_data=(测试集输入特征, 测试集标签),
validation_split=从训练集划分给测试集的比例,
validation_freq=多少次epoch测试一次)
# validation_data与validation_split 任选其一
6.展示
model.summary()
展示神经网络结构
7.
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 构建网络 1.拉直 2.128个全连接层relu 3.10个输出层softmax
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
# 训练准备 adam优化器 损失函数 准确值
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
metrics=['sparse_categorical_accuracy'])
# 训练 送入特征 batch大小 循环轮次 测试
model.fit(x_train, y_train, batch_size=128, epochs=5,
validation_data=(x_test, y_test),validation_freq=1)
# 打印训练出的模型
model.summary()