用 TensorFlow API:tf.keras 搭建网络八股
六步法
import
导入相关模块train, test
指定训练集的输入特征 x_train 和训练集的标签 y_train,以及测试集的输入特征 x_test 和测试集的标签 y_testmodel = 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="激活函数", kernal_size()=卷积核尺寸, strides=卷积步长, padding="valid" or "same")
activation(字符串给出)可选:relu、softmax、sigmoid、tanh
kernal_regularizer 可选:tf.keras.regularizers.l1()、tf.keras.regularizers.l2() - LSTM层:
tf.keras.layers.LSTM()
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]