搭建网络八股

六步法

用tf的API:tf.keras搭建:
六步法:

1
2
3
4
5
6
import
train,test
model=tf.keras.models.Sequential
model.compile
model.fit
model.summary

每步的简要介绍


import:导入相关模块


train,test
告知要喂入网络的训练集和测试集是什么。
即,指定训练集的输入特征x_train和训练集的标签y_train
指定测试集的输入特征x_test和测试集的标签y_test


model=tf.keras.models.Sequential:
在Sequential()中搭建网络结构,逐层描述每层网络,相当于走了一遍前向传播。


model.compile:
在compile()中配置训练方法,
告知训练时选择哪个优化器,选择哪个损失函数,选择哪个评测指标。


model.fit:
在fit()中执行训练过程,告知训练集和测试集的输入特征和标签。
告知每个batch是多少,告知要迭代多少次数据集。


model.summary:
用summary()打印出网格的结构和参数统计


Sequential详细介绍

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

网络结构举例:


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


compile详细介绍

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=学习率)
‘adam’ or tf.keras.optimizers.Adam (lr=学习率, beta_1=0.9, beta_2=0.999)

loss可选:

均方误差:
‘mse’ or tf.keras.losses.MeanSquaredError()

整数编码_多类交叉熵损失:
‘sparse_categorical_crossentropy’ or
tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)

Metrics可选:

‘accuracy’ : y_和y都是数值,如y_=[1] y=[1]
‘categorical_accuracy’ : y_和y都是独热码(概率分布),如y_=[0,1,0] y=[0.256,0.695,0.048]
‘sparse_categorical_accuracy’: y_是数值, y是独热码(概率分布),如y_=[1] y=[0.256,0.695,0.048]

fit详细介绍

1
2
3
4
5
model.fit (训练集的输入特征, 训练集的标签,
batch_size= , epochs= ,
validation_data=(测试集的输入特征,测试集的标签),
validation_split=从训练集划分多少比例给测试集,
validation_freq = 多少次epoch测试一次)

batch_size:每次喂入神经网络的样本数,即分多少组喂入
epochs:迭代的数据集的次数