机器学习(七)——tf.keras搭建神经网络固定模式

一、总纲(一般按照下面6步搭建)

  • import——导入相关模块

  • train,test——指定训练集与测试集

  • model = tf.keras.models.Sequential——在Sequential搭建神经网络,描述每层网络

  • model.compile——配置训练方法,优化器,损失函数,评测指标

  • model.fit——执行训练过程,告知训练集与测试集,设置batch,迭达多少次数据集

  • model.summary——用summary打印出网络的结构和参数统计

二、六步法详解

1、model = tf.keras.models.Squential([网络结构])#描述各层网络

网络结构举例:

拉直层: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()

2、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=学习率, momentum=动量参数)
'adam' or tf.keras.optimizers.Adam(lr=学习率, beta_1=0.9, beta_2=0.99)

loss可选:(均方误差与交叉熵)

'mse' or tf.keras.losses.MeanSquaresError()
'sparse_categorical_crossentropy' or
tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)

Metrics可选:(告知网络评测指标)
'accuracy':y_和y都是数值
'categorical_accuracy':y_和y都是独热码(概率分布)
'sparse_categorical_accuracy':y_是数值,y是独热码(概率分布)

3、model.fit(训练集的输入特征,训练集的标签,

batch_size=,epochs=,

validation_data=(测试集输入特征,测试集的标签),

validation_split=从训练集划分多少比例给测试集,

validation_freq=多少次epoch测试一次)

4、model.summary()打印出网络结构和参数统计

三、案例(鸢尾花分类用六步法实现)

import tensorflow as tf
import tensorflow.python.keras as keras
import numpy as np;
from sklearn import datasets  ##加载训练数据集


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 = keras.models.Sequential([
    keras.layers.Dense(3, activation='softmax', kernel_regularizer=keras.regularizers.l2())
])
###设置学习率与优化器,设置交叉熵loss函数,设置评测标准
model.compile(optimizer='SGD',
              loss=keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['sparse_categorical_accuracy'])
###设置训练集,batch_size的数值尽量设为2的n次方 validation_split是划分多少作为测试,validation_freq是每20次评测一下
model.fit(x_train, y_train, batch_size=32, epochs=500,validation_split=0.2,validation_freq=20)
model.summary()

你可能感兴趣的:(机器学习,keras,机器学习,深度学习)