SparseTensorオブジェクトのTensorFlow

でTensorFlowにおいて、SparseTensorオブジェクトは、スパース行列を表します。SparseTensor三の指標、値およびdense_shapeによって疎密行列を表すためにオブジェクト、これらの3つの意味の密行列は、以下に説明しました:

1.インデックス:シェイプ[N、ndims]であるテンソルターゲット、Int64の二次元データタイプ。インデックスは、すなわち、位置インデックスに格納されているスパースマトリックスに加えて、他の位置はゼロであり、ゼロのインデックス値を記憶されています。

2.値:テンソル一次元オブジェクト、図形[N]です。これは、インデックス位置指標スパース行列に対応する値です。

3. dense_shape:一次元データ型テンソルは、次元オブジェクトのInt64 [ndims]は、形状に対応する電流疎行列を指定します。

例えば、オブジェクトは疎行列SparseTensor(インデックス= [0、0]、[1、1]]、値= [1,1]、dense_shape = [3,3])は、以下の行列に対応します。

 [[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 0.]]

密行列にスパース行列SparseTensorオブジェクトのTf.sparse_tensor_to_dense関数は、tf.sparse_tensor_to_dense関数は次のプロトタイプがあります。

tf.sparse_tensor_to_dense(
     sp_input,
     default_value=0,
     validate_indices=True,
     name=None
)

入力し、次のようにパラメータの意味:

sp_input:SparseTensorが密行列入力を変換するためのオブジェクト。

DEFAULT_VALUE:スカラー型。Sp_inputスパース行列インデックスは、デフォルトは0であり、要素値の場所を指定しません。

validate_indices:bool型は、インデックス値がアルファベット順にソートされたか否かを設定するために使用されます。

名前:文字列型。オブジェクトのテンソルプレフィックス名が返されます。

 

サンプルコード:

import tensorflow as tf

# 定义Tensor对象
indices_tf = tf.constant([[0, 0], [1, 1]], dtype=tf.int64)
values_tf = tf.constant([1, 2], dtype=tf.float32)
dense_shape_tf = tf.constant([3, 3], dtype=tf.int64)

sparse_tf = tf.SparseTensor(indices=indices_tf,
                            values=values_tf,
                            dense_shape=dense_shape_tf)
dense_tf = tf.sparse_tensor_to_dense(sparse_tf, default_value=0)
with tf.Session() as sess:
    sparse, dense = sess.run([sparse_tf, dense_tf])
    print('sparse:\n', sparse)
    print('dense:\n', dense)

出力:

sparse:
 SparseTensorValue(indices=array([[0, 0],
       [1, 1]], dtype=int64), values=array([1., 2.], dtype=float32), dense_shape=array([3, 3], dtype=int64))

dense:
 [[1. 0. 0.]
 [0. 2. 0.]
 [0. 0. 0.]]

 

公開された105元の記事 ウォン称賛17 ビュー110 000 +

おすすめ

転載: blog.csdn.net/qq_38890412/article/details/104087552