2017-01-25 2 views
0

配列を操作するtensorflowで書かれた関数があります。 2次元配列を取り込み、配列の一部に対していくつかの演算を実行し、同じサイズと形状の配列を出力しますが、要素は変更されています。私の問題は、私のモデルでは、一度に1つの配列しか取得できないため、一式のバッチ(batch_size、array_size、channel)が得られるということです。チャネルは通常モノラルなので、入力バッチは4Dテンソルです。 関数を大きく変更することなく、この4Dテンソルのすべてのレイヤー(マトリックス)に関数を適用する方法はありますか?私は5ようなマトリックスのバッチにこれを適用する可能性がどのようにテンソルのバッチにあらかじめ定義された関数を適用する

def myFunction(matrix): 
    # function body 
    return another_matrix 

機能のようなものでしょうか?

答えて

0

tf.map_fn

これは、各2次元配列へのあなたのケースでは、各要素にfを適用します。これらの2D配列は、第2パラメータをアンパックすることによって得られる。

+0

最初のディメンションは私のバッチサイズなので、最初のディメンションに沿って私はアンスタッキングしないでください(アンパックは廃止されているようです)。私はmatrix = tf.unstack(バッチ)、output = tf.map_fn(myFunction、matrix)のようなものを考えていましたが、それは分かりません。 – Qubix

+0

あなたの0次元はバッチサイズです。 'map_fn'はそのディメンションに沿って自動的にアンパックします。 – Priyatham

関連する問題