tensorflow2.0シリーズ(1):テンソル

テンソル、操作、セッションおよびグラフ:次のいくつかのブログでは、基本的な概念ですtensorflow紹介します。私たちは知りたいと思ったテンソルを定義する必要がある方法ですか?そこにどのような操作する操作テンソル?構築する方法を、フロー図を計算することは何ですか?どのようにフローチャートの流れのテンソル計算、トレーニングや予測モデルの実現?

テンソル:テンソル

最も基本的なデータ構造tensorflowはテンソル、テンソルです。まず、テンソルを定義する方法を見て。これはndarray numpyのtf.Tensorと同様テンソル性質多次元アレイであり、また、データの種類と大きさを定義する必要があります。しかし、tf.Tensor定義テンソル操作は、GPU(もしあればtensorflow-GPUバージョン)で加速することができます。

自由に多次元配列を切り替えることができますndarrayとtensorflowテンソルテンソルnumpyの、例えば:

tensor = tf.convert_to_tensor([2,3,4], dtype=tf.float64)
tensor
Out[74]: <tf.Tensor: id=251, shape=(3,), dtype=float64, numpy=array([2., 3., 4.])>
numpy_array = tensor.numpy()
numpy_array
Out[76]: array([2., 3., 4.])

タグラベル、寸法および寸法データ型のデータタイプ:三つの基本的なテンソルのプロパティがあります。

テンソルデータ型

tf.dtypesモジュール(Module1が)データ・タイプに関連付けられたクラスや関数を定義しています。Pythonのモジュール(モジュール)は、PythonのPythonオブジェクト定義および文(定義と文)を含むファイルです。ファイル名は、接尾辞の.pyとモジュール名で、モジュール内、モジュール名が__name__のグローバル変数に格納され、文字列であり、モジュールは、モジュール名に__name__で直接参照することができます。
このようなクラス、関数、およびこれらのオブジェクトなど一部のオブジェクトを、再利用するために、モジュールがの.pyファイルで定義されている、またはテーラーの.pyに大きな複数のワークに簡単にファイルを維持するために、各ファイルの.pyこれは、モジュールです。
ドキュメントは、モジュールをtf.dtypesます。https://tensorflow.google.cn/api_docs/python/tf/dtypes

DTYPEクラス

クラスに含まtf.dtypes:以下のようにDTYPEに、テンソルは、サポートデータタイプを定義することができます。

機能

tf.as_typeは():オブジェクトDTYPEのタイプを定義します

どのように使用するには:

tf.dtypes.as_dtype(type_value)

type_value tf.Dtypeは、データタイプがtf.Dtypeタイプによって列挙することができる定義されてもよいです。

x = tf.constant([1.8, 2.2], dtype=tf.float32)
xint = tf.dtypes.as_type(tf.int32) # xint是tf.int32类型的Dtype对象

DTYPEこのタイプのオブジェクトXINTを得るTf.int32。

tf.dtypes.cast():テンソルマッピング/新しいタイプの予測

基本データ型は、DTYPEのtensorflowを定義された操作をサポート。Xの複合型(complex64、complex128)を固体型に変換され、戻り実部のみ。実数型複合型(complex64、complex128)を変換するとき、戻り値の虚部がゼロに設定されます。ここでは、治療とnumpyのの複合型の行動を一致させます。そしてtf.cast()関数は同じ機能です。

tf.dtypes.cast(x, dtype, name=None)

そして、上記の例:

xx = tf.dtypes.cast(x, tf.int32)  
 xxx = tf.cast(x,tf.int32)

輸出

xxx
Out[67]: <tf.Tensor: id=248, shape=(2,), dtype=int32, numpy=array([1, 2], dtype=int32)>

xx
Out[68]: <tf.Tensor: id=242, shape=(2,), dtype=int32, numpy=array([1, 2], dtype=int32)>

tf.dtypes.complexは():2複合体に実数に変換します

複合体の実部を表し、実際のテンソル所与、テンソルIMAGは実数部を表す複数の要素の形で複雑な操作が戻るの虚数部を表し、BはIMAG部分を表します。入力本物とIMAGテンソルは、同じ形状を持っている必要があります。そしてtf.cast()関数は同じ機能です。

rx = tf.constant([2.25, 3.25])
ix = tf.constant([4.75, 5.75])
cx = tf.complex(rx, ix)  # [[2.25 + 4.75j], [3.25 + 5.75j]]
cxx = tf.dtypes.complex(rx,ix)

その結果CXとCXXのように:

cxx
Out[61]: <tf.Tensor: id=246, shape=(2,), dtype=complex64, numpy=array([2.25+4.75j, 3.25+5.75j], dtype=complex64)>

cx
Out[62]: <tf.Tensor: id=245, shape=(2,), dtype=complex64, numpy=array([2.25+4.75j, 3.25+5.75j], dtype=complex64)>

tf.dtypes.saturate_castは():値が飽和セキュリティDTYPEに変換されます。

投影された指定されたデータ・タイプへの入力値は、データのオーバーフローを適切に正しいデータ変換を確実にするために、(クランプ)動作クランプ、投影で起こります。
tf.dtypes.saturate_cast(値、DTYPE、名前=なし)

4種類のテンソル

テンソル、tf.constant、tf.Variable、tf.placeholder、tf.sparse.SparseTensorの4つの主要な種類があります。テンソルを作成するときにDTYPEと名前のテンソルを指定しない場合、TFは自動的に自動的に値のデータ型に基づいて一致します。

定数タイプ:tf.constant()

:tf.constant()メソッドは、基本的な関数を呼び出す
tf.constant(value, type, name='')
例:


const1 = tf.constant(1, tf.int16, name='tensor1')
print('const1:')
print(const1)

const2 = tf.constant(np.pi, tf.float32, name='tensor2')
print('const2:')
print(const2)

const3 = tf.constant('tensorflow-2.0', tf.string, name='tensor3')
print('const3:')
print(const3)

const4 = tf.constant([[10,12],[23,45],[45,6]])
print('const4')
print(const4)
print('shape of const4: '+str(const4.shape))# 查看tensor的维度

取得:

const1:
tf.Tensor(1, shape=(), dtype=int16)
const2:
tf.Tensor(3.1415927, shape=(), dtype=float32)
const3:
tf.Tensor(b'tensorflow-2.0', shape=(), dtype=string)
const4
tf.Tensor(
[[10 12]
 [23 45]
 [45  6]], shape=(3, 2), dtype=int32)
shape of const4: (3, 2)

変数タイプ:tf.Variable()

変数は、多くの操作をカプセル化tensorflowのクラスであり、OPSをいうので、最初の文字は大文字。OPのtensorflowは、最初の文字は小文字であり、例えば、OPと略記定数動作であるので、定数は、最初の文字を小文字です。

以下のような、非常に単純であるテンソル型の変数を作成します。

w = tf.Variable(<initial-value>, name=<optional-name>)

tf2.0で、初期値の作成で変数が初期化子を再使用するのではなく、直接割り当てられるべきであることに注意してください。作成した後に、変数のtf.Variable種類は、あなたが初期化、およびセッションのセッションで実行する必要があります。


# Launch the graph in a session.
with tf.compat.v1.Session() as sess:
    # Run the variable initializer.
    sess.run(w.initializer)
    # ...you now can run ops that use the value of 'w'...

TF 1.xでは、作成するtf.compat.v1.get_variable()関数を使用します


tf.compat.v1.get_variable(name='',values,dtype,initializer)

テンソル寸法値、例えばzeros_initializer型テンソルの初期化方法の変数初期化子です。


var1 = tf.compat.v1.get_variable('var1', [1,2], dtype=tf.int32, initializer=tf.zeros_initializer)
print(var1)

var2 = tf.Variable([1,2],name='var2')
print(var2)

得ます

<tf.Variable 'var1:0' shape=(1, 2) dtype=int32, numpy=array([[0, 0]], dtype=int32)>
 <tf.Variable 'var2:0' shape=(2,) dtype=int32, numpy=array([1, 2], dtype=int32)>

プレースホルダの種類:tf.placeholder()

TF 1.xで、tf.placeholder()関数を使用するプレースホルダ型テンソルの必要性を作成します。さて、この関数が呼び出される)は、(tf.compat.v1.placeholderに変更されます。

tf.compat.v1.placeholder(
    dtype,
    shape=None,
    name=None
)

プレースホルダ型テンソルは、主であると考えることができるモデルデータ「への供給」と、このタイプのタグを作成するために使用されるヌルテンソル予め定義された変数、データラベル入力のパーセントの計算グラフを作成する場合このプレースホルダデータ構造定義は、セッションを開始した後、実際のデータをロード。
ここでは簡単な例ですが、それtensorflowの正弦曲線を描きます。

import numpy as np
import matplotlib.pyplot as plt

x_data = np.array([np.linspace(0,2*np.pi,100)]).transpose()

with tf.Graph().as_default():
    x = tf.compat.v1.placeholder(tf.float32, shape=(100,1))
    y = tf.sin(x)
    with tf.compat.v1.Session() as sess:
        sin_x = sess.run(y, feed_dict={x:x_data})
        
plt.plot(x_data,sin_x)

得ます
ここに画像を挿入説明

スパーステンソル:tf.sparse.SparseTensor()

データの大部分が位置にのみ散発的なデータが非ゼロデータの位置とその上のデータ自体の保存限り、記憶空間を節約するためにない0である、0にスパーステンソルは、定義によりテンソルです。だから、まばらなテンソルは、以下の方法を使用して作成することができます。

s_tensor = tf.sparse.SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4])
with tf.compat.v1.Session() as sess:
    print(sess.run(s_tensor))

出力:

SparseTensorValue(indices=array([[0, 0],
       [1, 2]]), values=array([1, 2], dtype=int32), dense_shape=array([3, 4]))
公開された111元の記事 ウォンの賞賛118 ビュー280 000 +

おすすめ

転載: blog.csdn.net/happyhorizion/article/details/103833899