机器学习(七)——tf.keras搭建神经网络固定模式
一、總綱(一般按照下面6步搭建)
-
import——導入相關模塊
-
train,test——指定訓練集與測試集
-
model = tf.keras.models.Sequential——在Sequential搭建神經網絡,描述每層網絡
-
model.compile——配置訓練方法,優化器,損失函數,評測指標
-
model.fit——執行訓練過程,告知訓練集與測試集,設置batch,迭達多少次數據集
-
model.summary——用summary打印出網絡的結構和參數統計
二、六步法詳解
1、model = tf.keras.models.Squential([網絡結構])#描述各層網絡
網絡結構舉例:
拉直層: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()
2、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=學習率, momentum=動量參數)
'adam' or tf.keras.optimizers.Adam(lr=學習率, beta_1=0.9, beta_2=0.99)
loss可選:(均方誤差與交叉熵)
'mse' or tf.keras.losses.MeanSquaresError()
'sparse_categorical_crossentropy' or
tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)
Metrics可選:(告知網絡評測指標)
'accuracy':y_和y都是數值
'categorical_accuracy':y_和y都是獨熱碼(概率分布)
'sparse_categorical_accuracy':y_是數值,y是獨熱碼(概率分布)
3、model.fit(訓練集的輸入特征,訓練集的標簽,
batch_size=,epochs=,
validation_data=(測試集輸入特征,測試集的標簽),
validation_split=從訓練集劃分多少比例給測試集,
validation_freq=多少次epoch測試一次)
4、model.summary()打印出網絡結構和參數統計
三、案例(鳶尾花分類用六步法實現)
import tensorflow as tf import tensorflow.python.keras as keras import numpy as np; from sklearn import datasets ##加載訓練數據集x_train = datasets.load_iris().data y_train = datasets.load_iris().targetnp.random.seed(116) np.random.shuffle(x_train) np.random.seed(116) np.random.shuffle(y_train) tf.random.set_seed(116)###設置全連接層,設置激活函數,設置正則化函數model = keras.models.Sequential([keras.layers.Dense(3, activation='softmax', kernel_regularizer=keras.regularizers.l2()) ]) ###設置學習率與優化器,設置交叉熵loss函數,設置評測標準 model.compile(optimizer='SGD',loss=keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy']) ###設置訓練集,batch_size的數值盡量設為2的n次方 validation_split是劃分多少作為測試,validation_freq是每20次評測一下 model.fit(x_train, y_train, batch_size=32, epochs=500,validation_split=0.2,validation_freq=20) model.summary() 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的机器学习(七)——tf.keras搭建神经网络固定模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(六)——优化器
- 下一篇: C++(五)——运算符重载