tensorflow中model.compile()用法
tensorflow中model.compile()用法
model.compile()方法用于在配置訓練方法時,告知訓練時用的優化器、損失函數和準確率評測標準
?model.compile(optimizer =?優化器,
? ? ? ? ? ? ? ? ? ? ? ? loss =?損失函數,
? ? ? ? ? ? ? ? ? ? ? ? metrics = ["準確率”])
其中:
optimizer可以是字符串形式給出的優化器名字,也可以是函數形式,使用函數形式可以設置學習率、動量和超參數
例如:“sgd”? ?或者? ?tf.optimizers.SGD(lr =?學習率,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?decay =?學習率衰減率,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? momentum =?動量參數)
? ? ? ? ? ?“adagrad"? 或者? tf.keras.optimizers.Adagrad(lr =?學習率,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?decay =?學習率衰減率)
? ? ? ? ? ? ”adadelta"? 或者? tf.keras.optimizers.Adadelta(lr =?學習率,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?decay =?學習率衰減率)
? ? ? ? ? ? ?“adam"? 或者? tf.keras.optimizers.Adam(lr =?學習率,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? decay =?學習率衰減率)
?
loss可以是字符串形式給出的損失函數的名字,也可以是函數形式
例如:”mse"?或者 tf.keras.losses.MeanSquaredError()
? ? ? ? ? ?"sparse_categorical_crossentropy"? 或者? tf.keras.losses.SparseCatagoricalCrossentropy(from_logits = False)
? ? ? ? ? ? ?損失函數經常需要使用softmax函數來將輸出轉化為概率分布的形式,在這里from_logits代表是否將輸出轉為概率分布的形式,為False時表示轉換為概率分布,為True時表示不轉換,直接輸出
?
Metrics標注網絡評價指標
例如:
? ? ? ? "accuracy" : y_?和 y?都是數值,如y_ = [1] y = [1]? #y_為真實值,y為預測值
? ? ? ? “sparse_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]
? ? ? ? ?
?
示例代碼:
#第一步,import import tensorflow as tf #導入模塊 from sklearn import datasets #從sklearn中導入數據集 import numpy as np #導入科學計算模塊 import keras#第二步,train, test x_train = datasets.load_iris().data #導入iris數據集的輸入y_train = datasets.load_iris().target #導入iris數據集的標簽np.random.seed(120) #設置隨機種子,讓每次結果都一樣,方便對照np.random.shuffle(x_train) #使用shuffle()方法,讓輸入x_train亂序np.random.seed(120) #設置隨機種子,讓每次結果都一樣,方便對照np.random.shuffle(y_train) #使用shuffle()方法,讓輸入y_train亂序tf.random.set_seed(120) #讓tensorflow中的種子數設置為120#第三步,models.Sequential() model = tf.keras.models.Sequential([ #使用models.Sequential()來搭建神經網絡tf.keras.layers.Dense(3, activation = "softmax", kernel_regularizer = tf.keras.regularizers.l2()) #全連接層,三個神經元,激活函數為softmax,使用l2正則化 ])#第四步,model.compile() model.compile( #使用model.compile()方法來配置訓練方法optimizer = tf.keras.optimizers.SGD(lr = 0.1), #使用SGD優化器,學習率為0.1loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits = False), #配置損失函數metrics = ['sparse_categorical_accuracy'] #標注網絡評價指標 )#第五步,model.fit() model.fit( #使用model.fit()方法來執行訓練過程,x_train, y_train, #告知訓練集的輸入以及標簽,batch_size = 32, #每一批batch的大小為32,epochs = 500, #迭代次數epochs為500validation_split = 0.2, #從測試集中劃分80%給訓練集validation_freq = 20 #測試的間隔次數為20 )#第六步,model.summary() model.summary() #打印神經網絡結構,統計參數數目?
?
總結
以上是生活随笔為你收集整理的tensorflow中model.compile()用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机音乐谱安娜的橱窗,《安娜的橱窗,钢
- 下一篇: unity 植物大战僵尸怎么做