我試圖找到一個實際的Conv2D操作的實現,所以我可以評估內存訪問模式。跟蹤事物,看起來Conv2D操作的執行通過contract()
函數調用進入Eigen。問題是,我似乎無法在TensorFlow或Eigen源中找到函數的定義或聲明。TensorFlow Conv2D實現?
什麼函數主要負責在TensorFlow中執行Conv2D操作?我想看看它是如何癱瘓的,一般的內存訪問模式是什麼,以及原始計算是如何完成的。
該查詢專門用於CPU,因爲我已經在一定程度上研究了GPU的執行情況。
我試圖找到一個實際的Conv2D操作的實現,所以我可以評估內存訪問模式。跟蹤事物,看起來Conv2D操作的執行通過contract()
函數調用進入Eigen。問題是,我似乎無法在TensorFlow或Eigen源中找到函數的定義或聲明。TensorFlow Conv2D實現?
什麼函數主要負責在TensorFlow中執行Conv2D操作?我想看看它是如何癱瘓的,一般的內存訪問模式是什麼,以及原始計算是如何完成的。
該查詢專門用於CPU,因爲我已經在一定程度上研究了GPU的執行情況。
經過一番搜索,我發現CPU Conv2D的實際執行是在deep_conv2d.cc。
我認爲Conv2dCPU使用本徵conv ops Line 61 onwards
不是真的,這是爲操作設置的(爲簡化情況調用一些優化方法)。注意'functor :: SpatialConvolution
您可能會看看https://github.com/tensorflow/tensorflow /blob/master/tensorflow/core/kernels/conv_ops.cc#L277 –
contract()
返回一個抽象的表達,其評價TensorContraction.h實現在這個文件中實現。它本質上是Eigen矩陣或矩陣矢量產品的封裝。
你知道在這個文件中實現的Deep和Direct卷積之間有什麼區別嗎? –