ガイダンスマップ(this研究論文に続いて)を使用して、双方向グリッドをアップサンプリングしようとしています。テンソルのバッチから個々のテンソルを抽出する方法は?
I 3つの入力を受け取り、アップサンプリングされた画像を提供するKeras層を作成した:形状の
- BilateralGrids(なし、16、16、96)
- 形状のGuidanceMaps(なし、256、 256)
- ここ形状のInputImages(なし、256、256、3)
は、 'なし' は、実行時に決定されるバッチサイズではありません。
私の動機は、次のようにピクセル単位の計算を実行することです:
def slicing(BilateralGrids, GuidanceMaps, InputImages):
output_images = []
for i in range(batchSize):
grid = BilateralGrids[i]
guide = GuidanceMaps[i]
input_img = InputImages[i]
output = performPixelwiseComputation(grid, guide, input_img)
#output.shape => (256, 256, 3)
output_images.append(output)
return output_images #output_images.shape => (BatchSize, 256, 256, 3)
問題は、それが不明であるため、私たちはバッチサイズをループを実行することはできませんです。
、私は次のことを試してみましたが、何も問題は解決しません:
- 当初、私はラムダ層は入力を一つずつを提供しますと思ったが、それは完全なバッチを提供します。
- その後、私はpythonでzip()を試しましたが、テンソルではうまくいきません。
PS:これは私の最初のStackOverflow質問です。私はそれが理想的な方法で求められなければ謝罪します。あなたが必要なもの
'performPixelwiseComputation'を一度にテンソルフロー操作を使用してバッチ全体で使用できる方法はありませんか?それ以外の場合は、自分のカーネルを作成し、バッチ全体で必要な操作を設計する良い機会のように思えます。 – Sunreef
@Sunreefいいえ、テンソルフローのデフォルト操作は私のためには機能しません。 pielwiseComputationは、各入力から各ピクセルにアクセスする必要があり、異なる次元のものであるため、自分で計算する必要があります。 私は自分のカーネルを書くことについて何も知らない、あるいは経験がありません。私はカーネルを作成したC++でいくつかのコードを見てきましたが、コードの流れを追跡する以外に、私はその作業を理解できませんでした。私はそれについてのより多くの情報を見つけることができるいくつかのリンクに私を転送してください。また、Kerasやtensorflowでカーネルを書くことができますか、それともC++で作業する必要がありますか? –
機能に対してバッチサイズが不明であることを要求していますか?32などの固定バッチサイズを使用できますか? –