structure.」と怒られることがあります。その対処法を見ていきます。(0番目の次元に対して展開したリストに対してスキャンする)https://www.tensorflow.org/api_docs/python/tf/scanもっと簡単に言うと、テンソルの1次元目に対してforループを回すようなイメージです。xprint(x)あくまでイメージです。こんなことをしたいときに便利だったりします。あとはただ単に制御フローとしてforループ感覚でも使えます。ディープラーニングで0番目の次元はほぼバッチ(サンプル)の次元なので、サンプル単位のforループでしょうか。考えると使う機会はあると思います。ちなみに、同種のforループlikeな制御フローを提供する関数として、tf.map_fnという関数がありますが、TPUの対応状況を見るとtf.map_fnが未対応でtf.scanが試験運用中で対応(2019/11/6時点)という状況です。そのため、tf.map_fn感覚でtf.scanを使うということも考えられるでしょう。基本的な例まず、引数が1個の例です。print(y)fの引数は、aggがこれまでの集約結果、xがスライスしたアイテムを示します。この例では累積和を取っています。4」という入力に対する累積和になっています。errortf.scanのx部分をTupleなどにすると複数引数でも対応可能です。イメージ的にはこういうことができます。x2print(agg)同様にtf.scanでも書いてみます。print(y)ところがこれはエラーになります。structure:.x1もx2も同じshapeなのになぜエラーが出るのでしょうか。解決法この原因は集約部分の初期値のshapeです。以下のように、tf.scanのinitialzerを指定するとうまくいきます。multi()このケースでは2乗の累積和になります。)(より一般的には1次元目以降のshape)となります。1次元目以降のshape)として初期化するため、1変数ではうまくいっても2変数ではうまくいかなくなるようです。「累積和でなくていいから、ただ複数引数の間の計算をしたい」という場合も対応できます。tf.scanで呼び出す関数の中身を少しいじりましょう。print(y)これはただの2乗になります。Commentコメントをキャンセルメールアドレスが公開されることはありません。