2016-10-26 10 views
0

スパーステンソル。シェイプメソッドは、実行関数に頼らずに、スパーステンソルの実際の形状を抽出するのには役に立たないと思われるテンソルオブジェクトを返します。run()を呼び出さずにスパーステンソルの形状

= tf.SparseTensor(インデックス= [0、0、0]、[1、2、1]]、値= 1.0:スパーステンソルを考慮最初、私は何を意味するか明確にする

+ 2J、2.0]、形状= [3,4、2])

a.shapeリターン:

tf.Tensor 'SparseTensor_1 /形状:0' の形状=(3、)DTYPE = int64モード

これはまったく役に立たない。

= tf.constant(np.random.normal(0.0、1.0、(4,4))astype(DTYPE = np.complex128)。)

次に、緻密なテンソルを検討します

a.get_shapeは()を返します。 TensorShape([寸法(4)、外形寸法(4)])

I)は、(この出力を使用し、これまでに実行を呼び出さずに整数のリストやタプルにそれをキャストすることができます。しかし、疎テンソルを最初に疎テンソルに変換してから(まだ複雑な疎のテンソルでは実装されていない)、get_shape()メソッドを呼び出さない限り、疎テンソルで同じことを行うことはできませんが、入力スパーステンソルが複雑な場合には、最初に疎テンソルを使用し、また、道路をエラーダウンさせます。

run()を呼び出すことなく、またはそれを高密度のテンソルに変換せずに、疎テンソルの形状を取得する方法はありますか?

+0

QED、疎テンソルの形を使用する例がありますか?私はそれがTensorflowのopまたは変数を定義するためのものだと思いますか? – Corentin

答えて

0

tf.SparseTensorは、フードの下で高密度のテンソルの3倍として実装されます。 SparseTensorのshapeは単なるテンソルです。あなたは、その値を知りたい場合は、あなたの最善の策は、session.runを使用して、それを評価することである。一般的には

print(sess.run(a.shape)) 

、Tensorflowもグラフ構築時に密なテンソルの正確な形状を計算することを約束しません。形状は最善の努力であり、固定値でさえない場合もあります。だから密なTensorの場合でも、正確な形状を得るためにrunを使ってTensorを評価しなければならないかもしれません。

関連する問題