使用keras六步搭建神经网络

1 keras介绍

        tf.keras是tensorflow2引入的高封装都得框架,可以用于快速搭建神经网络。

1.1通过阅读源码和注释得方法学习API

1.1.1在pycharm集成开发环境中查看框架源码

使用keras六步搭建神经网络_第1张图片

将鼠标放在函数上按住Ctrl键,根据源码和注释了解函数得实现方法。

1.1.2在tensorflow官网中查询函数文档

使用keras六步搭建神经网络_第2张图片

2 tf.keras搭建神经网络六步法

第一步:import相关模块。

# import工具包
import tensorflow as tf
from sklearn import  datasets
import numpy as np

 第二步:指定输入网络得训练集和测试集。

# train  test
x_train = datasets.load_iris().data
y_train = datasets.load_iris().target

 第三步:逐层搭建网络结构。

# models.Sequential
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer = tf.keras.regularizers.l2())
])

第四步:在model.compile()中配置训练方法,选择训练时使用得优化器、损失函数和最终评价指标。

# model.compile
model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['sparse_categorical_accuracy']
              )

第五步:在model.fit()中执行训练过程,告知训练集和测试集得输入值和标签、每个batch大小(batchsize)和数据集的迭代次数(epoch)。

#model.fit
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)

第六步:使用model.summary()打印网络结构,统计参数数目。

#model.summary
model.summary()

3 函数的用法介绍

tf.kera.models.Sequential()

        Sequential函数是一个容器,描述了神经网络的网络结构,在Sequential函数的输入参数中描述从输入层到输出层的网络结构。

如:

import tensorflow as tf
from tensorflow.keras.layers import Dense,Flatten
from tensorflow.keras import Model

model = tf.keras.models.Sequential([
    # 拉直层:拉直层可以变换张量的尺寸,把输入特征拉直为一维数组,是不含计算参数的层。
    tf.keras.layers.Flatten()
    # 全连接层
    tf.keras.layers.Dense(神经元个数,activation="激活函数",keras.regularizers="正则化方式")
    # 其中
    activation可选:relu、softmax、sigmoid、tanh等
    keras_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用于配置神经网络的训练方法,告知训练过程中使用的优化器、损失函数、准确率评测标准。
model.compile(optimizer=优化器,loss=损失函数, metrics=["准确率"])
# 1.优化器可以是字符串形式给出优化器名称,也可以是函数形式。使用函数形式可以设置学习率、动量和超参数。
'sgd' or tf.optimizers.SGD(lr=学习率, decay=学习率衰减率,momentum=动量参数)
'adagrad' or tf.keras.optimizers.Adagrad(lr=学习率, decay=学习率衰减率)
'adadelta' or tf.keras.optimizers.Adadelta(lr=学习率, decay=学习率衰减率)
'adam' or tf.keras.optimizers.Adam(lr=学习率, decay=学习率衰减率)
# 2.loss可以是字符串形式给出优化器名称,也可以是函数形式。
'mse' or tf.keras.losses.MeanSquaredError()
'sparse_categorical_crossentropy' or tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)
#loss常需要经过softmax等函数将输出转化为概率分布的形式。from_logits则用来标注该损失函数是否需要转换为概率的形式,
# 取False时表示转化为概率分布,取True时表示没有转化为概率分布,直接输出。
# 3.Metrics标注网络评测指标
'accuracy': y_ 和 y 都是数值,如 y_=[1]  y=[1]
'categorical_accuracy': y_ 和 y都是以独热码和概率分布表示。 y_=[0,1]  y=[0.4,0.6]
'sparse_categorical_accuracy': y_ 是以数值形式给出,y 是以独热码形式给出。 y_=[1],y=[0.4,0.6]

# model.fit用于执行训练过程
model.fit(
    训练的输入特征,训练集标签,batch_size,epochs,
    validation_data = (测试集的输入特征,测试集的标签),
    validation_split = 从测试集划分多少比例给训练集,
    validation_freq = 测试的epoch间隔次数
)

#summary函数用于打印网络结构和参数统计
model.summary()

你可能感兴趣的:(Tensorflow,神经网络,tensorflow,人工智能)