Tensorflow中Keras搭建神经网络六步法及参数详解 -- Tensorflow自学笔记12

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

1.  import 相关模块

如 import tensorflow as tf。

2. 指定输入网络的训练集和测试集

如指定训练集的输入 x_train 和标签 y_train,测试集的输入 x_test 和标签 y_test。

3. 逐层搭建网络结构

model = tf.keras.models.Sequential()。

4. 在 model.compile()中配置训练方法

选择训练时使用的优化器、损失函数和最终评价指标。

5. 在 model.fit()中执行训练过程

告知训练集和测试集的输入值和标签、 每个 batch 的大小(batchsize)和数据集的迭代次数(epoch)。

6. 使用 model.summary()打印网络结构

统计参数数目。

二. 函数用法介绍

1. tf.keras.models.Sequential()

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

如:

1.1. 拉直层:tf.keras.layers.Flatten() 

拉直层可以变换张量的尺寸,把输入特征拉直为一维数组,是不含计算参数的层。

1.2. 全连接层Dense

tf.keras.layers.Dense( 神经元个数,

                                       activation=”激活函数”,

                                       kernel_regularizer=”正则化方式”)

其中:
1). activation(字符串给出)可选 relu、softmax、sigmoid、tanh 等

2). kernel_regularizer 可选 tf.keras.regularizers.l1()、tf.keras.regularizers.l2() 

1.3. 卷积层Conv2D

tf.keras.layers.Conv2D( filter = 卷积核个数,

                                         kernel_size = 卷积核尺寸, strides = 卷积步长,
                                         padding = “valid” or “same”)

1.4. LSTM 层

tf.keras.layers.LSTM()。 

这里只使用拉直层和全连接层,还有卷积层和循环神经网络层

2. model.compile

Model.compile( optimizer = 优化器,

                            loss = 损失函数,

                            metrics = [“准确率”])

Compile 用于配置神经网络的训练方法,告知训练时使用的优化器、损失函 数和准确率评测标准。

其中:

2.1. optimizer

可以是字符串形式给出的优化器名字,也可以是函数形式,使用函数 形式可以设置学习率、动量和超参数。

可选项包括:
1).  ‘sgd’or tf.optimizers.SGD( lr=学习率,

                                              decay=学习率衰减率,

                                              momentum=动量参数) ‘

2). 'adagrad’or tf.keras.optimizers.Adagrad(lr=学习率,

                                                                          decay=学习率衰减率)

3). ‘adadelta’or tf.keras.optimizers.Adadelta(lr=学习率,

                                                                             decay=学习率衰减率)

4). ‘adam’or tf.keras.optimizers.Adam (lr=学习率,

                                                                   decay=学习率衰减率)

2.2. Loss 

Loss 可以是字符串形式给出的损失函数的名字,也可以是函数形式。

可选项包括:
1). ‘mse’ 或 tf.keras.losses.MeanSquaredError()

2). ‘sparse_categorical_crossentropy 或tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)

损失函数常需要经过 softmax 等函数将输出转化为概率分布的形式。 from_logits 则用来标注该损失函数是否需要转换为概率的形式,取 False 时表 示转化为概率分布,取 True 时表示没有转化为概率分布,直接输出。

2.3. Metrics

Metrics 标注网络评测指标

可选项包括:
1). ‘accuracy’:y_和 y 都是数值,如 y_=[1] y=[1]。

2). ‘categorical_accuracy’:y_和 y 都是以独热码和概率分布表示。

                                                如y_=[0, 1, 0], y=[0.256, 0.695, 0.048]。

3). ‘sparse_ categorical_accuracy’:y_是以数值形式给出,y 是以独热码形式 给出。

                                                            如 y_=[1],y=[0.256, 0.695, 0.048]。

3. model.fit

fit 函数用于执行训练过程

model.fit(训练集的输入特征,

                 训练集的标签,

                  batch_size, epochs,

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

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

                  validation_freq = 测试的 epoch 间隔次数)

4. model.summary

——model.summary()Tensorflow中Keras搭建神经网络六步法及参数详解 -- Tensorflow自学笔记12_第1张图片

summary 函数用于打印网络结构和参数统计

上图是 model.summary()对鸢尾花分类网络的网络结构和参数统计,对于一 个输入为 4 输出为 3 的全连接网络,共有 15 个参数。

你可能感兴趣的:(tensorflow,笔记,人工智能,深度学习,神经网络)