神经网络八股的六步法搭建
应用搭建好的神经网络模型步骤:
1.自制训练集和数据增强
2.断点续训和提取参数
3.可视化loss和acc曲线
4.应用训练好的网络
一、import导入相关包
例如:
import tensorflow as tf
from tensorflow.keras.layers import Dense
import numpy as np
#......等等
二、train、test训练集、测试集获取
告知要喂入网络的train训练集和test测试集是什么;也就是要指定训练集的输入特征x_train和训练集的标签y_train,还可以指定测试集的输入特征x_test和测试集的标签y_test。
三、Sequential搭建网络结构
在Sequential中搭建网络结构,逐层描述每层网络,相当于走了一遍前向传播。
拉直层:tf.keras.layers.Flatten()
全连接层: tf.keras.layers.Dense(神经元个数, activation=“激活函数”, kernel_regularizer=哪种正则化)
#其中:activation(字符串给出)可选:relu、softmax、sigmoid、tanh;
#其中:kernel_regularizer可选:tf.keras.regularizers.l1()、tf.keras.regularizers.l2()
卷积层:tf.keras.layers.Conv2D(filters=卷积核个数, kernel_size=卷积核尺寸, strides=卷积步长, padding=“valid"or"same”)
LSTM层(循环神经网络层):tf.keras.layers.LSTM()
四、compile配置训练方法
在compile中配置训练方法,告知训练时使用哪种优化器,选择哪个损失函数,选择哪种评测指标。
model.compile(optimizer = 优化器, loss = 损失函数, metrics = [“准确率”])
Optimizer可选:
‘sgd’ or tf.keras.optimizers.SGD(lr=学习率, momentum=动量参数) ‘adagrad’ or tf.keras.optimizers.Adagrad(lr=学习率)
‘adadelta’ or tf.keras.optimizers.Adadelta(lr=学习率) ‘adam’ or
tf.keras.optimizers.Adam(lr=学习率, bera_1=0.9, beta_2=0.999)
loss可选:
‘mse’ or tf.keras.losses.MeanSquaredError()
‘sparse_categorical_crossentropy’ or
tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)
Metics可选: ‘accuracy’:y_和y都是数值,如y_=[1] y=[1]
‘categorical_accuracy’:y_和y都是独热码(概率分布),如y_=[0, 1, 0] y=[0.256, 0.695,
0.049] ‘sparse_categorical_accuracy’:y_是数值,y是独热码(概率分布),如y_=[1] y=[0.256, 0.695, 0.049]
五、fit执行训练过程
告知训练集和测试集的输入特征和标签,告知每个batch是多少,告知要迭代多少次数据集。
model.fit(训练集的输入特征, 训练集的标签, batch_size=分组大小, epochs=迭代次数, validation_data=(测试集的输入特征, 测试集的标签), validation_split=从训练集划分多少比例给测试集, validation_freq=多少次epoch测试一次)
其中:validation_data和validation_split二选一即可
六、summary打印网络结构和参数统计
model.summary()