用tensorflow API :tf.keras搭建网络八股(sequential搭建神经网络法)
用sequential可以搭建出上层输出就是下层输入的顺序网络结构
六步走
1:import相关模块,比如import tensorflow as tf
import tensorflow as tf
from sklearn import datasets
import numpy as np
2:告知要喂入网络的训练集(输入特征x_train,输入标签y_train)和测试集(输入特征x_test,输入标签y_test)
x_train = datasets.load_iris().data
y_train = datasets.load_iris().target
#测试机的输入特征x_test和标签y_test可以在这里直接给定,也可以在fit中按比例从训练集中划分,该例子选择后者
np.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)#数据集乱序
3:在sequential中搭建网络结构,逐层描述每层网络,相当于走了一遍前向传播
model = tf.keras.models.Sequential
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
])
#搭建网络结构(神经元个数,选用的激活函数,选用的正则化方法)
4:modul.compile()在compile中配置训练方法,告知训练时选用哪种优化器,选择哪个损失函数,选择哪种评测指标
model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
metrics=['sparse_categorical_accuracy'])
#配置训练方法(选择优化器SGD,学习率设置为0.1
#选择SparseCategoricalCrossentropy作为损失函数,由于在上一个函数中神经网络末端使用了softmax函数,from_logits=False标明为概率输出
#选择sparse_categorical_accuracy作为评测指标,表示数据集标签为数值,输出是概率分布
5:model.fit()在fit中执行训练过程,告知训练集和测试集的输入特征和输入标签,告知每个batch是多少,告知要迭代多少次数据集
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)
#执行训练过程(训练集输入特征,训练集输入标签,一个batch(2的n次方数),循环迭代次数,从训练集中选择20%的数据作为测试集,每迭代20次训练集要在测试集中验证一次准确率
6:model.summary()打印出网络的结构和参数统计
model.summary()#打印网格结构和参数统计