2016-10-26 3 views
1

リストのリストをテンソルでテンソルに渡す方法を知りたかったのですが、私は[batch_size、seq_len]の配列を渡すことができました。各項目は単なる数字です。しかし、今、私はリストのリストも形状の(BATCH_SIZE、seq_len]を持っていますが、どのように私は、これを通過しないリストをテンソルに渡す

私はこれを試してみました:?

self.inputs_X = [tf.placeholder(tf.int32, shape=[None, None], 
       name='inputs_X{0}'.format(i)) for i in xrange(SEQ_LEN)] 

(*私は明示的に渡さずに、これを行うことができます任意の方法SEQ_LEN中)

すべてtf.int32の最初に、私は長くないイムがリストにpasssing、int型で渡しているので、意味がありません。だから、私はこのエラーを取得してい:?。

ValueError:配列を持つ配列要素を設定する

ヘルプをよろしくお願いします。

答えて

1

TensorFlowの「xのリスト」は、既存のテンソルの次元を増やすことです。

[1、2、3、4、5]のリストを渡していて、これらのリストを渡す場合は、次元数を1増やし、行列(次元2のテンソル)。

tf.int32は、テンソルにまだ完全なintが含まれているので意味があります。

これは難しいことですが、シェイプパラメータに余分な要素を追加するだけで済みます。 tf.placeholder(tf.int32, shape=[None, None, SEQ_LEN])(必要に応じてSEQ_LENをNoneに置き換えます)。私はデータを見ていないので、SEQ_LENも別の位置にある必要があります。

リストのリストを1つのリストにまとめて、tf.reshapeを使用して、それを必要な行列または高次元の形状に変更することもできます。

+0

私は形= [None、None、None]でうまくいくことにしました。 しかし、私はこの形で私の仕事に取り組もうとしてきましたが、私はそれを理解することができません。入力を埋め込んで、今度は[64 X 41 X 395 X 500]という形にしました。これは64(batch_size)、41(seq_len)、395(各項目のイベント)、500(各イベントを表す埋め込み)です。 –

+0

私が作成しようとしている結果は[64 X 41 X 500]であり、これはミニバッチのそれぞれの場合の意味ですが、私はまだ41個のアイテムすべてを持っていますが、各アイテムに対して500個の浮動小数点の埋め込みがあります。私は各項目の395 X 500を取って平均を計算するので、わずか500に削減されます。今ここでは難しい部分がありますが、それぞれのケース(行)ごとに、私はこのようなテンソルです。各行のサイズは41です。 [9 0 0 0 ... 0 0] [9 8 0 0 ... 0 0] ... –

+0

私のミニバッチからの最初の単一のケースでは、9は395から最初の9個のアイテムを取り出し平均します。 これは1X41X500を作成します。ここでは、最初の列のみが値を持ち、残りはゼロです。 次に、私のミニバッチの2番目のケースでは、[9、8、0、... 0]は1st/41 395の最初の9個のアイテムを取り、それらを平均することを意味します。 –

関連する問題