2017-07-21 19 views
2

私はテンソルフローで画像にコンボリューションを実行したいと思います。私は、カーネルがイメージと同じくらい高く、非常に薄いものにしたい。たとえば、次のようにTensorflow、軸に沿ってパディングを指定する方法はありますか?

kernel_size = [200, 24] 
image_size = [200, 400] 

私が代わりにベクトルを抜け出すのパディング「SAME」を、使用している場合でtensorflowは、上部と下部と畳み込みで画像をパッド以来、私は、バック[200、400]画像を取得しますパディングされたイメージ上のカーネル

一方、パディング「VALID」を使用すると、上部と下部の問題は消えますが、画像の水平方向も完全に覆わないため、画像の水平方向イメージがカーネルの次元で割り切れない場合は、その一部を失います。

上下に「VALID」パディング、左右に「SAME」パディングを実行する方法はありますか?または、これを行う別の方法がありますか?

答えて

1

テンソルの畳み込み関数のデフォルトのパディングオプションでは、これを行う方法はありません。テンソルを手動で埋め込んで、水平ディメンションをカーネルディメンションで割り切れるようにする必要があります。

パディングが手動で手動パディングのピクセルを持っていないためにVALIDパディングを使用した後は、あなたが形と値を定数テンソルとtf.concatを使用することができてmanualyパッドにあなたのテンソルを

をパディング以外のものであるとみなすことあなたは欲しい。あなたの画像が常に同じサイズであれば、これは把握するのが難しくありません。

0

non-standard paddingの場合、TFにはカスタムパディング操作があります。tf.pad()。したがって、適切な詰め物が何であるか把握して、何かを呼び出してください。

# 't' is [[1, 2, 3], [4, 5, 6]]. 
# 'paddings' is [[1, 1,], [2, 2]]. 
# rank of 't' is 2. 
pad(t, paddings, "CONSTANT") ==> [[0, 0, 0, 0, 0, 0, 0], 
            [0, 0, 1, 2, 3, 0, 0], 
            [0, 0, 4, 5, 6, 0, 0], 
            [0, 0, 0, 0, 0, 0, 0]] 
関連する問題