浅いTensorFlowのまばらなテンソルは表します。


多次元の疎データに対して,TensorFlowはSparseTensorをサポートしている。
公式文書アドレス:https://tensorflow.google.cn/api_ガイド/python/sparse_ops
構造間引きテンソル
SparseTensor(indices,values,dense_shape
indicesは次元が(n,ndims)の2次元int 64テンソルで、非ゼロ要素の位置を指定します。例えばindices=[[1,3],[2,4]]は[1,3]、[2,4]の位置を表す要素が非ゼロ要素です。nは非ゼロ要素の個数を表し、ndimsは構造の間引きテンソルの次元を表します。
valuesは次元が(N)の1−Dテンソルで、indicesが指す位置の要素値に対応しています。
dense_shapeは次元が(ndims)の1-Dテンソルで、まばらなテンソルの次元を表しています。

tf.SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4])
>>
[[1, 0, 0, 0]
 [0, 0, 2, 0]
 [0, 0, 0, 0]]
変換
まばらなテンソルを通常のマトリクスに変えます。

tf.sparse_to_dense(
sparse_indices,
output_shape,
sparse_values,
default_value=0,
validate_indices=True,
name=None
)
sparse_indicesはそれらの非ゼロ要素の位置です。
sparse_indicesは、一次元マトリックスのある要素位置を指定する実数です。
sparse_indicesはベクトルで、この行列は1次元マトリックスで、1次元マトリックスの複数の要素を指定します。
sparse_indicesは二次元マトリックスであり、このマトリクスは多次元マトリクスであり、多次元マトリクスの複数の要素を指定している。
out put_shapeはマトリクスの次元です。
sparse_valueはsparseに対応しています。indicesが指す位置の要素値です。
default_valueは、要素が指定されていないデフォルトの値で、一般的に0です。

import tensorflow as tf 

mysparse_indices = tf.constant(5)
mymatrix = tf.sparse_to_dense(mysparse_indices, [11], 10)
with tf.Session() as sess:
  result = sess.run(mymatrix)
  print(result)

//[0 0 0 0 0 10 0 0 0 0 0]
SparseTensorとSparseTensorValue
両者のパラメータは同じです。
計算図でパーステンソルを定義する場合、SparseTensorを使用する。feedデータでSparseTensorValueを使用します。
知識を補充します:徹底的にtenssor flowの中のテンソルを理解します。
1.引用
畳み込み神経ネットワーク(CNN)を学ぶとき、最も重要なのは、ネットワークの各階層のニューロン入出力のデータ構造(すなわちテンソル)を解明することである。線形代数で習った行列だけを使って,ベクトルでテンソルを理解すれば,きっと霧がかかります。ですから、テンソルとは何かを明確にする必要があります。
まず明確にします。テンソルの最も主要な二つのパラメータ:rank(段、または次元)、sharpe(形状)
2.テンソルとは
図はテンソルの直感的なイメージです。テンソルはスカラー、ベクトル、行列のセットとプロモーションです。

3.何がrankですか
rank
数学の実例
Pythonの例
0
純粋な数字(サイズのみ)
s=352
1
ベクトル(1つの基本ベクトル)
v=[1.1,2.2,3.3]
2
行列(2つの基本ベクトル)
m=[[1,2,3],[4,5,6],[7,8,9]
3
データ立体(3つの基本ベクトル)
t=[[2]、[4]、[6]、[8]、[10]、[12]]、[14]、[16]、[18]]
n
n基本ベクトル

かっこ[]の階数を数えて、テンソルの次元(段)を決定することができます。
何が基本ベクトルですか?
基本ベクトル(basis vector):いくつかのbasis vectorはいくつかの態様でデータのセットを記述しています。
例を挙げて説明します
一次元テンソル:概念とベクトルは全く同じです。図中の白い線はベクトルです。もちろん、3次元空間ベクトルには3つの分割ベクトル(それぞれx方向、y方向、z方向)があります。

二次元テンソル:次の長方形に力を加えますが、どうやって説明しますか?
私たちはこの長方形をxoy、xoz、yozの三つの平面に切り取り、その後各平面において力の状況を分析します。
二つのbasis vectorが出てきました。一つは断面方向を説明するためのものです。これは三次元ベクトルです。もう一つは、この断面の力受け状況を説明するために用いられる(もちろん、これも3次元ベクトルである)。

この平面の法ベクトルはx軸単位ベクトルであり、力を受けるx軸成分はPxxで表して、9つの要素を含む行列に押し広めることができます。これは2次元テンソルです。
一つの三次元空間では、二つの基本ベクトルから一つのものを記述します。このテンソルに含まれる要素の個数は3の2乗は9つに等しいはずです。各要素は2つの基本ベクトルの注釈を得ることができる。これは2次元のテンソルです。

三次元テンソル:
各要素には三つの基本ベクトルの注釈があります。三次元のテンソルの形は積み重ねられたマトリクスのようです。

最後の一品という言葉

4.shopとは何ですか
shapeは各階にいくつの元素があるかを指定します。
例えば、[2,3,4]は第一層の2つの要素、第二層の3つの要素、第三層の4つの要素を指します。これを通じて、このテンソルは全部で2つあることが分かります。× 3× 4=24の要素です。そして3階がありますので、このボリュームのrank=3が分かります。
注意:要素を読み、外括弧から中かっこに読みます。
以下のコードでも問題を説明できます。

import tensorflow as tf
#        , 6   ,       [2.3]
a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2,3])
with tf.Session() as session:
  print(session.run(a))
印刷の結果は
[[1 2 3][4 5 6]]
以上の簡単なTensorFlowのまばらなテンソルは、小編集が皆さんに提供した内容の全てを表しています。参考にしていただければと思います。