2016-11-13 6 views
0

全体として、Tensorflowを使用してRNNモデルを作成しています。私はRNNCellを継承し、自分のセルをカスタマイズします。最後に、dynamic_rnnを使用してRNN全体を構築します。詳細は、テンソルを形状[n、m]から[n、m、1]に変換したいということです。私はこれを実装するために2つのメソッドを使用します。私は何を期待Tensorflowでreshapeとexpand_dimsを使用して異なる結果が得られるのはなぜですか?

tf.reshape(matrix, [n, m, 1]) # the first method 
tf.expand_dims(matrix, -1) # the second method 

は、これらの2つの方法を使用して、私は(すべてのランダムシードが固定されている)全く同じトレーニングと予測結果を得るということです。しかし結果は異なっている。私は本当に混乱しています。

答えて

0

tf.reshapeは要素を並べ替えますが、tf.expand_dimsはテンソルに次元を追加します。それらの機能は異なります。

しかしランダムな初期化のために、結果を訓練するたびに若干異なるはずです。

+0

ありがとうございます!私は 'reshape(行列、[n、m、1])'と 'expand_dims(行列、-1)の両方の結果を得るためにsession.runを使いますが、それらはまったく同じです。 「その機能は違いますか?」とはどういう意味ですか?固定ランダムシードを設定するので、コードを実行するたびにランダム性がなくなります。 – jzb

+0

同じ入力で同じ結果が一貫して得られますか? –

+0

はい、一貫して方法1(または方法2)を使用すると、ランダムなシードが固定されているので、常に同じ結果が得られます。しかし、私のコードを方法1から方法2に切り替えると(その逆)、私は異なる結果になります。 – jzb

関連する問題