tf.keras搭建网络八股
六步法:
import 导入模块
train,test 训练集和测试集是什么(训练集输入特征x_train和训练集的标签y_train)
(测试集输入特征x_test和测试集的标签y_test)
model = tf.keras.models.Sequential 在Sequntial()中搭建网络结构,逐层描述每层网络,走一遍前向传播
model.compile 配置训练方法,告知训练时选择哪种优化器,选择哪个损失函数,选择哪种评测指标
model.fit 执行训练过程,告知训练集和测试集的输入特征和标签,告知每个batch是多少,迭代多少次数据集
model.summary 打印出网络的结构和参数统计
model = tf.keras.models.Sequential([网络结构]) Sequential可以认为是一个容器,容器中封装了一个神经网络结构,要描述从输入层到输出层每一层的网络结构。
每一层的网络结构可以 是:
拉直层: tf.keras.layers.Flatten() 不含计算,只是形状转换,把输入特征拉直变成一维数组
全连接层:tf.keras.layers.Dense(神经元个数,activation="激活函数",kernel_regularizer=哪种正则化)
激活函数可以选择:relu、softmax、sigmoid、tanh(以字符串的形式给出)
正则化可以选择: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()
model.compile(optimizer = 优化器,loss=损失函数,metrics=["准确率"])
Optimizer可选:
'sgd' or tf.keras.optimizers.SGD(lr=学习率,momentum=动量参数)
'adagard' 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) 是否原始输出,False说明经过了概率分布
Metrics可选:
'accuracy' : y_核y都是数值 , 如y_=[1] y=[1]
'categorical_accuracy': y_和y都是读热码(概率分布),如y_=[0,1,1] y=[0.256,0.695,0.048]
‘sparse_categorical_accuracy’ : y_是数值, y是读热码(概率分布)如y_=[1] y=[0.256,0.695,0.048]
model.fit(训练集的输入特征,训练集的标签,batch_size,epochs=,
validation_data=(测试集的输入特征,测试集的标签),
validation_split=从训练集划分多少比例给测试集,
validation_freq=多少次epoch测试一次)
model.summary() 可以打印出网络的结构和参数统计