六步法搭建神经网络

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() 可以打印出网络的结构和参数统计

 

你可能感兴趣的:(TensorFlow)