我試圖在張量流中創建簡單的4層(包括輸入層)神經網絡來處理MNIST數據。它與下面的圖像清晰度效果很好,Tensorflow:排除向後傳遞的操作
Graph1
with tf.name_scope("layer1"):
z1 = tf.matmul(x,w1) + b1
a1 = tf.nn.sigmoid(z1)
with tf.name_scope("layer2"):
z2 = tf.matmul(a1,w2) + b2
a2 = tf.nn.sigmoid(z2)
with tf.name_scope("layer3"):
z3 = tf.matmul(a2,w3) + b3
接下來,我想每個激活後執行一些操作,我創建一個圖形如下,
Graph2
with tf.name_scope("layer1"):
x = transform(x)
z1 = tf.matmul(x,w1) + b1
a1 = tf.nn.sigmoid(z1)
with tf.name_scope("layer2"):
a1 = transform(a1)
z2 = tf.matmul(a1,w2) + b2
a2 = tf.nn.sigmoid(z2)
with tf.name_scope("layer3"):
a2 = transform(a2)
z3 = tf.matmul(a2,w3) + b3
其中,transform是一個用tensorflow定義的python函數,通過一些數學變換生成與輸入矩陣相同大小的輸出矩陣。 Graph1訓練良好,我的表現很好,但Graph2的問題是隻有「layer3」可訓練,即w3和b3,tensorflow排除訓練集中的其他變量。我嘗試將var_list添加到優化器,但沒有運氣。 tf.stop_gradient
與變量一起工作,但如何將它用於python函數?更具體地說,我想排除「轉換」函數本身的反向傳遞,只能用於正向傳遞。在這個link你會發現在張量板中創建的圖形。有沒有辦法在tensorflow中做到這一點? TIA!