一、六步法搭建Keras神经网络模型
·第一步:导入库函数
·第二步:划分数据集
·第三步:搭建神经网络模型的tf.keras.models.Sequential,模型搭建
·第四步:compile选择损失函数,优化器,准确率表达形式......
·第五步:fit选择输入特征,标签,迭代次数,batch大小,数据集划分比例、每多少epoch验证一次数据集
·第六步:打印出模型summery并且验证模型
二、神经网络层
sequential是神经网络层的容器:
Flatten层不包含计算,只是将数据拉直为一维数组
Dense全连接层包含计算,可以设定神经元个数、激活函数、正则化方法(l1,l2)等
Conv2卷积层有卷积核个数、卷积核尺寸、卷积核步长、以及padding填充
LSTM层等
三、网络层创建函数介绍
1.sequential函数介绍
其中正则化对应L1,和L2正则化方法
2.compile函数
tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)的from_logits参数是在询问输出是否是原始输出或者概率分布输出,若是经过了softmax的概率分布输出,那么该参数设置为False
3.fit函数
四、实例讲解
import tensorflow as tf
from sklearn import datasets
import numpy as np
x_train = datasets.load_iris().data
y_train = datasets.load_iris().target
np.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
])
model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
metrics=['sparse_categorical_accuracy'])
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)
model.summary()
首先获取鸢尾花分类的数据集并且打乱 ,创建神经网络层容器并添加了全连接层,同时设置正则化和激活函数,compile设置了学习率0.1的SGD优化器和损失函数(经过了softmax的概率分布输出,那么该参数设置为False),fit喂入数据集和标签并设置batch和epoch,切分数据集0.8:0.2,并且是20次epoch会验证一次准确率,最后打印神经网络模型如下:
结果:
以上是简单的六步法tf.keras创建神经网络模型
参考链接: