9
在TensorFlow中,tf.layers
和tf.contrib.layers
共享很多功能(標準2D卷積層,批量標準化層等)。這兩者之間的區別只是contrib.layers
包仍然是實驗性的,其中layers
包被認爲是穩定的?或者一個被另一個替代?其他區別?爲什麼這兩個分開?TensorFlow - tf.layers vs tf.contrib.layers
在TensorFlow中,tf.layers
和tf.contrib.layers
共享很多功能(標準2D卷積層,批量標準化層等)。這兩者之間的區別只是contrib.layers
包仍然是實驗性的,其中layers
包被認爲是穩定的?或者一個被另一個替代?其他區別?爲什麼這兩個分開?TensorFlow - tf.layers vs tf.contrib.layers
您已回答了您自己的問題。 tf.contrib
命名空間的官方文檔描述爲:
contrib模塊包含易失性或實驗性代碼。
因此tf.contrib
保留用於實驗功能。這個命名空間中的API允許在不同版本之間快速更改,而其他版本通常不能沒有新的主要版本。具體而言,tf.contrib.layers
中的功能與tf.layers
中的功能不同,儘管其中一些功能可能使用不同的名稱複製。
至於你是否應該使用它們,這取決於你是否願意處理突然中斷的變化。不依賴於tf.contrib
的代碼可能更容易遷移到未來版本的TensorFlow。
是否有任何理由,這些模塊之間的許多功能是重複的? tf.contrib.layers中的版本,比如具有更好優化的實驗版本還是其他?還是隻是因爲歷史原因將圖層模塊添加到tf之前剩下的? – erobertc
@erobert這可能需要根據具體情況進行評估。通常,'tf.contrib'使社區能夠嘗試不同的API,並在此過程中暴露不太穩定的功能。因此,在新功能着陸後,他們不必立即消失。同樣,它們也可能被完全更改或在次要版本中清除。目前,例如,'tf.layers.conv2d'和'tf.contrib.layers.conv2d'具有不同的原型,並不總是可以互換的。 –