で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.]]