tensorflow只訓練指定變數

2021-10-06 17:49:22 字數 758 閱讀 5925

在用tensorflow訓練神經網路時,有時我們想固定其中一些變數的取值不變,訓練指定scope中的變數,常用的如finetune等。

一種最常用的方法是在用optimizer計算梯度時,指定計算梯度的變數列表(待優化的變數列表)。示例如下:

import tensorflow as tf

import tensorflow.contrib.slim as slim

# 定義優化器

g_optimizer = tf.train.adamoptimizer(learning_rate = 1e-4)

# 指定待優化的變數列表

g_var_list = tf.get_collection(key=tf.graphkeys.training_variables,scope="generator")

# 根據損失 gen_loss, 計算指定變數的優化梯度,g_gradient中儲存了待優化的變數和對應變數的優化梯度。

g_gradient = g_optimizer.compute_gradients(loss = gen_loss, var_list = g_var_list)

# 應用梯度,用計算的變數梯度優化變數列表中的變數

更多提取變數列表的方法可參考:tensorflow 獲取model中的變數列表,用於模型載入等

更多凍結變數的方法可參考:tensorflow凍結變數方法(tensorflow freeze variable)

但是我認為,以上就足夠了。

TensorFlow訓練Logistic回歸

如下圖,可以清晰看到線性回歸和邏輯回歸的關係,乙個線性方程被邏輯方程歸一化後就成了邏輯回歸。對於二分類,輸出假如線性回歸模型為,則要將z轉成y,即y g z 於是最直接的方式是用單位階躍函式來表示,即 如圖,但階躍函式不連續,於是用sigmoid函式替代之,為 如圖,則有,即logistics函式,...

Tensorflow訓練迴圈

def fit loop model,inputs,targets,sample weights none,class weight none,val inputs none,val targets none,val sample weights none,batch size none,epoch...

tensorflow 資料訓練

一 資料訓練遇到問題 excle資料,如何進行訓練?excle資料,如何resize 呢?目前思路 tfrecords 採用 numpy的方法進行處理 學習方法 從檔案中讀取資料 標準化格式tfrecords記錄 二 資料預處理 numpy 不能有中文,要採用decode等方法 不能夠有百分號?目前...