我正在使用 keras 功能 api 實作 U-net。U-net 的一個方面是具有“水平”背景關系連接(類似于殘差)。我使用 for 回圈創建下采樣和上采樣層。例如:
for filters in [32, 64, 128]:
x = inverted_residual_block(x, expand=filters*2, squeeze=filters)
x = inverted_residual_block(x, expand=filters*2, squeeze=filters)
x = down_sampling_block(x,filters=filters)
我可以在一個簡單的串列中收集中間輸入嗎
horizontal_connection.append(x)
在我的回圈中在上采樣期間呼叫?我在 keras 或 TF 中找不到關于此方法導致問題的任何注釋。我擔心這會在圖形生成程序中導致錯誤。如果有人有經驗或見解分享,將不勝感激!
uj5u.com熱心網友回復:
我認為這只能在急切執行中起作用,因為串列是一個 python 結構。在圖執行中,python 構造只被評估一次,并且是在實際執行張量流圖之前。如果您需要在回圈中的圖形執行中創建陣列,您可以使用 tf.TensorArray ( https://www.tensorflow.org/api_docs/python/tf/TensorArray )。
Eager execution 與 python 代碼一起評估張量操作;因此,可以同時使用 python 串列和 tensorfow 的張量。Eager execution 有利于除錯,但如果你想讓它運行得更快,那么你必須使用圖形執行。
uj5u.com熱心網友回復:
我已經經歷并實作了陣列的這些用途,但我沒有看到性能出現重大下降。我對 Functional API 的理解是不完整的,但我相信這是有道理的,因為您只是在參考不同的層而不是向圖表添加問題。當圖形貫穿模型的各個層時,不應因構建模型的方式而中斷。此外,即使該假設是錯誤的,AutoGraph 也會負責將基本 Python 代碼轉換為圖形代碼。例如,將 while 回圈轉換為 tf.while_loop()。
感謝您對我的問題發表評論!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/392858.html
上一篇:在cloud9環境中存盤密碼
下一篇:Keras預處理:樣本數量
