溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

keras如何獲取某層輸出和復(fù)用層的多次輸出

發(fā)布時(shí)間:2020-07-22 14:45:33 來源:億速云 閱讀:185 作者:小豬 欄目:開發(fā)技術(shù)

這篇文章主要講解了keras如何獲取某層輸出和復(fù)用層的多次輸出,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

兩個(gè)tensor經(jīng)過一個(gè)layer實(shí)例會(huì)產(chǎn)生兩個(gè)輸出。

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

這個(gè)代碼有錯(cuò)誤,因?yàn)樽詈笠恍袥]有指定lstm這個(gè)layer實(shí)例的那個(gè)輸出。

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

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

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

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

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

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

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

#新建一個(gè)打印層。
class PrintLayer(Layer):
	#初始化方法,不須改變
 def __init__(self, **kwargs):
  super(PrintLayer, self).__init__(**kwargs)
	#調(diào)用該層時(shí)執(zhí)行的方法
 def call(self, x):
  x = tf.Print(x,[x],message="x is: ",summarize=65536)
  #調(diào)用tf的Print方法打印tensor方法,第一個(gè)參數(shù)為輸入的x,第二個(gè)參數(shù)為要輸出的參數(shù),summarize參數(shù)為輸出的元素個(gè)數(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é)果一定要在下一層用到,不然不會(huì)打印tensor。該結(jié)點(diǎn)可以加在任何結(jié)點(diǎn)之間。

看完上述內(nèi)容,是不是對(duì)keras如何獲取某層輸出和復(fù)用層的多次輸出有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI