2016-02-06 34 views
1

我正在TensorFlow中實施基於元素的操作。許多TensorFlow操作,例如添加,支持廣播(from numpy)。如果遵守以下規則,則廣播是可能的:在Tensorflow中檢查廣播兼容性 - C++ API

當在兩個張量上操作時,它們的形狀應該按照元素進行比較。該過程從尾部維度開始,並向前推進。兩個維度在相等時兼容,或者其中一個維度是1.如果這些條件不滿足,則拋出異常,表明張量具有不兼容的形狀。結果張量的大小是輸入數組每個維度的最大大小。

不TensorFlow C++ API提供用於比較兼容性2張量任何方法?或者,這是最快的方法嗎?

回答

1

TensorFlow中的所有基於元素的二進制操作的內核實現來自BinaryOpShared類,它通過幫助類BinaryOpState進行兼容性檢查。也許,你可以簡單地從BinaryOpShared派生你的內核類,並免費獲得兼容性檢查。

+0

我觀察到以下行爲,我不確定是否正確。給定兩個尺寸的張量[3,4],BCast算子返回一個新的張量[12]。你能評論它嗎? – GDG

+0

當TF計算(x op y)時,其中x和y具有形狀[3,4],op是一個二元元素運算符,TF首先將x和y重塑爲一維形狀的張量[12],計算在一維維度運算,然後將結果重塑爲[3,4]作爲最終輸出。 – zfc