2016-11-29 20 views
1

tensorflowのランクと形状のコンセプトについては混乱しています。私はhereから詳細を読んで、それらについて私のコンセプトをクリアするためにいくつかのコードを実行しました。しかし、私はまだ混乱しており、理解するのに助けが必要です。テンソルフローのランクと形状についての混乱

x = tf.placeholder(tf.float32, shape=[2, 12]) 
print(x.get_shape()) # ==> (2, 12) 
print(x[0, :].get_shape()) # ==> (12,) 
print(x[1, :].get_shape()) # ==> (12,) 
print(x[2, :].get_shape()) # ==> (12,) 
print(x[120, :].get_shape()) # ==> (12,) 

私はx2number of rows12number of columnsある2D行列のようなものであると思いました。なぜx[120, :]の形が(12,)となっているのですか?与えられた形でx[120, :]がどのように可能ですか?

さらに、私はxが2Dテンソルであると考えていたので、次元とランクはテンソルの場合と同じです(私の理解によると)。しかし、私は実行すると:

print(x[0].get_shape()) 

が、私はこのエラーを取得しています:

Shape (2, 12) must have rank 1 

それは私の理解がランクと次元について間違っていることを意味します。ランクとディメンションについて私は何が欠けていますか?ランクとディメンションは2つの異なるものですか?上記の例のランクはtensor xとはどのようになっていますか?どのようにしてテンソルの階数を設定できますか?誰かが包括的な事例を詳細に説明できますか?

私は非常に感謝します。ありがとう!

+0

'x [0]'はテンソルフローの最新バージョンで動作するはずです。テンソルフローを更新しようとします –

答えて

1

私はlinkを提供しています。


テンソルの階数は、

  • そのランクが2
  • 着色画像が三次元そう[height, width, 3]それを有しているので、行列は、2つの寸法を有するを有する寸法の数でありますランクは3

テンソルの形状は、各次元の詳細なコンポーネント数です

  • マトリックスが2次元、ランク2を有し、6は、行数と列
  • (ランク3)200×200カラー画像の10数を有することになる[6, 10]ような形状を有することができますあなたの例については[200, 200, 3]

を形作る、x[120, :]120が有効なインデックスであればTensorFlowがまだチェックされていないので、書き込むことが可能です。あなたのセッションを作成し、コードを実行すると、エラーが見つかります。

res = x[120, :] 

with tf.Session(): 
    sess.run(res, feed_dict={x: np.zeros((2, 12))}) 

InvalidArgumentError: slice index 120 of dimension 0 out of bounds.


としてはx[0]がTen​​sorFlowの最新バージョンで動作するはずですし、それがテンソルを与える必要があり、私のコメントで述べました形状は(12,)であり、ランク1である。

+0

私はテンソルフロー0.10を使用しています。この声明の意味は何ですか?シェイプ(2,12)はランク1でなければなりません。形状(2,12)は行列を意味し、行列の階数はどのように1になりますか?あなたが言ったことは私には分かりますが、マトリックスのランクは1である可能性はありますか? –

+0

バージョン0.10では、ランク1のテンソルの 'x [0]'しか書くことができないと思います。行列の最初の行を取得したい場合は、 'x [0、:]'を指定する必要があります。なぜあなたはエラーを持っていたのですか?これはv0.11で修正されました –

+0

私の質問は - シェイプ(2,12)がランク1をどのように表しているのですか? Shapeで2つのディメンションを定義しているので、ランク2にする必要があります。テンソルフローのバージョンを忘れて、バージョンの問題を理解しました。 –

関連する問題