欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

keras 獲取某層輸出 獲取復(fù)用層的多次輸出實例

 更新時間:2020年05月23日 09:44:27   作者:TinaO-O  
這篇文章主要介紹了keras 獲取某層輸出 獲取復(fù)用層的多次輸出實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

官方文檔很全面,搜索功能也很好。但是如果你想單獨(dú)實現(xiàn)某個功能,根本無從搜尋。于是我寫了這個筆記。從功能出發(fā)。

兩個tensor經(jīng)過一個layer實例會產(chǎn)生兩個輸出。

a = Input(shape=(280, 256))
b = Input(shape=(280, 256))
 
lstm = LSTM(32)
encoded_a = lstm(a)
encoded_b = lstm(b)
 
lstm.output

這個代碼有錯誤,因為最后一行沒有指定lstm這個layer實例的那個輸出。

>> AttributeError: Layer lstm_1 has multiple inbound nodes,
hence the notion of "layer output" is ill-defined.
Use `get_output_at(node_index)` instead.

所以如果想要得到多個輸出中的一個:

assert lstm.get_output_at(0) == encoded_a
assert lstm.get_output_at(1) == encoded_b

補(bǔ)充知識:kears訓(xùn)練中如何實時輸出卷積層的結(jié)果?

在訓(xùn)練unet模型時,發(fā)現(xiàn)預(yù)測結(jié)果和真實結(jié)果幾乎完全差距太大,想著打印每層輸出的結(jié)果查看問題在哪?

但是發(fā)現(xiàn)kears只是提供了訓(xùn)練完成后在模型測試時輸出每層的函數(shù)。并沒有提供訓(xùn)練時的函數(shù),同時本著不對原有代碼進(jìn)行太大改動。最后實現(xiàn)了這個方法。

即新建一個輸出節(jié)點(diǎn)添加到現(xiàn)有的網(wǎng)絡(luò)結(jié)構(gòu)里面。

#新建一個打印層。
class PrintLayer(Layer):
	#初始化方法,不須改變
 def __init__(self, **kwargs):
  super(PrintLayer, self).__init__(**kwargs)
	#調(diào)用該層時執(zhí)行的方法
 def call(self, x):
  x = tf.Print(x,[x],message="x is: ",summarize=65536)
  #調(diào)用tf的Print方法打印tensor方法,第一個參數(shù)為輸入的x,第二個參數(shù)為要輸出的參數(shù),summarize參數(shù)為輸出的元素個數(shù)。
  return x;
  #一定要返回tf.Print()函數(shù)返回的變量,不要直接使用傳入的變量。
 
#接著在網(wǎng)絡(luò)中引入
conv9 = Conv2D(2, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv9)
print11 = PrintLayer()(conv9)
conv10 = Conv2D(1, 1, activation = 'sigmoid')(print11)
#PrintLayer層處理的結(jié)果一定要在下一層用到,不然不會打印tensor。該結(jié)點(diǎn)可以加在任何結(jié)點(diǎn)之間。

以上這篇keras 獲取某層輸出 獲取復(fù)用層的多次輸出實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論