2017-06-20 48 views
0

我想實現一個SSIM丟失函數,因爲邊界由卷積中止,我想保留寄宿生並計算邊界像素的L1損失。代碼從這裏學到。 SSIM/MS-SSIM for TensorFlow如何將值分配給Tensorflow中的指定位置?

例如我們hava img1和img2的大小[batch,32,32,32,1],以及高斯11的window_size,結果ssim映射將是[batch,22,22,22,1] ,L1圖[批處理,32,32,32,1]如何將ssim分配給L1的中心?

我收到錯誤這樣; 類型錯誤:「張量」對象不支持項目分配

回答

1

對於價值的明智assignement,給看看答案在這裏:Adjust Single Value within Tensor -- TensorFlow

的方式可能去跟着你正在尋找可能是更重要的是:

  • 創建ssim_map張
  • 創建ssim_map的框架,即部分(如張量),您爲了完成ssim_map需要L1_map
  • 使用tf.concat操作把拼在一起,讓你的最終張

例如,我沒有,如果它工作檢查,但somethink這樣應該做的工作:

upper_band1 = L1_map[:, :5, 5:-5, 5:-5, :] 
lower_band1 = L1_map[:, -5:, 5:-5, 5:-5, :] 
upper_band2 = L1_map[:, :, :5, 5:-5, :] 
lower_band2 = L1_map[:, :, -5:, 5:-5, :] 
upper_band3 = L1_map[:, :, :, :5, :] 
lower_band3 = L1_map[:, :, :, -5:, :] 

intermediate_1 = tf.concat([upper_band1, ssmi_map, lower_band1], axis=1) 
intermediate_2 = tf.concat([upper_band2, intermediate1, lower_band2], axis=2) 
final = tf.concat([upper_band3, intermediate3, lower_band3], axis=3) 
+0

什麼是ssim_map的框架?我很困惑。 –

+0

我的意思是L1_map中的值不會被ssim_map的值覆蓋。爲了獲得這些,你應該相應地分割L1_map。 –

+1

增加了一個更完整的例子,可能有一個錯誤,但它說明了這個想法 –

相關問題