さて、今日我々は最終的に友人の機械学習の枠組みの中で最も人気のある地域でのステージに入った--TensorFlow。右、これはGoogleの機械学習フレームワークによって開発されただけで、それもフレームワークを学ぶための無料のビデオチュートリアルを開いたが、これらのチュートリアルがある非常に使いやすいですし、このフレームワークを促進するために、ほぼすべての主流、Googleが認識されていますベースTensorFlow1.0バージョンが更新されていません。今TensorFlow2.0バージョン、あなたはまだ、私はカザフスタン停止していないよピットをジャンプする必要性を感じる場合は、互換性のないその多くは、非常に、非常に大きな、非常にピットを開発したAPIの変更です。これは、公式のビデオチュートリアルアプリケーションのアドレスがありますhttps://developers.google.com/machine-learning/crash-course/ml-intro このビデオの適用範囲が比較的広いですが、それはまた、最大の欠点のいくつかを持っている:1上述のように、それはチュートリアルは、バージョン1.0に基づいていますが、実行するために、最新のTensorFlowに入れた場合、あなたは多くのミスを見つける来る; 2、その内容は非常に浅い深度ビデオです浅いが、ちょうどいくつかの基本的なAPIを言っている。まとめるので、我々は行き止まりにそのビデオを参照するが、確かではないために参照することもできますし、非常に苦痛でしょう。まあ、我々は今日の私たちの話題に来て、それはテンソルとデータセットオブジェクトにTensorFlowあります。いわゆる強固な基盤、地球が動いていた、とテンソルデータセットはTensorFlowの基礎と土台です。私たちはメインタスクTensorFlowがデータを処理していることをすべて知っているが、我々は確かにそれに注意を払うに持っているので、基本的なフォーマットは、テンソルおよびデータセットですTensorFlowデータ。このセクションでは、LETの最初のデータ・フォーマットTensorFlow操作オブジェクトについての話だけでなく、TensorFlow基本的なデータオブジェクトを行います。
- テンソル
テンソルテンソルは、実際にここで私はテンソルであるかを説明していない、を意味するように変換し、我々はその後、ターゲット・オブジェクトのような形状、DTYPEなどというようにそこに格納されたオブジェクトデータと他のいくつかの性質を、それを取りました。ためには、小さな例で見てみましょうは、次のようにTensorFlowでテンソルのような終わりを見に多くの画像をお見せします
<tf.Tensor:ID = 835、形状=(2)、DTYPE = INT32、numpyの配列=([4,6])>
あなたも、それがデータndarrayのタイプであることを見ることができ、また、我々の焦点のコアは、彼のnumpyの財産であり、タプルである形状属性、;; DTYPEプロパティを我々はテンソルオブジェクトはid属性を持って、上から見ることができます。シンプル、シンプルなのに、私たちはその意味や性質を理解しなければならない、このような配列でnumpyのように他のタイプのデータと混同しないように、そのフォームがあり、Pythonのリストでは、彼らは同じように見えますが、お互いにも対応多くの場合、彼らは本質的に異なるデータタイプに属しています。我々はすでに、我々はテンソルにそれをどのように作成するか、のようなテンソルを見て知っているが、また、テンソルのどのような意味を知っているので、まあ、?実際には、Pythonのnumpyのか、あらゆる種類のデータは、限りTensorFlowがオペレータによって計算されるように、それは自動的にタイプしてリターンテンソルに変換され、右、あなたはそれが正しい、TensorFlowはまた彼自身の足し算と引き算を持って聞きました乗算、除算などのAPI、我々は以下のいくつかの簡単な例を見て
tf.add(1,2 )
tf.add([1,2]、[3,4 ])
tf.square(5 )
テンソル= tf.constant([1,2,3,4,5])
以上の結果が返されます。
<tf.Tensor:ID = 859、形状=()、DTYPE = INT32、numpyの= 3> <tf.Tensor:ID = 862、形状=(2)、DTYPE = INT32、numpyの配列=([4,6 ])> <tf.Tensor:ID = 864、形状=()、DTYPE = INT32、numpyの= 25> <tf.Tensor:ID = 865、形状=(5)、DTYPE = INT32、numpyの配列=([ 1、2、3、4、5])>
我々は、データまたはデータnumpyのはPythonを持っている場合は、もう一度この質問、そしてどのように我々はそれらを変換することができ、上記の例と組み合わせて、前述の分析テンソル構造については、我々は、データオブジェクトのテンソルのより深い理解できるようになりますテンソルに、さらに彼らはそれお互いに変換することができますか???これは、もちろん、我々はすべての権利、次のコードを見ている、頻繁に遭遇する必要があります
"2.テンソルとnumpyのアレイとの間の変換"
ndarray = np.ones([3,3 ])
(tensorflow操作によって)テンソルにnumpyのアレイから#2.1
(ndarray、1テンソル= tf.multiply )
numpyのにテンソルから#2.2アレイ(明示的numpyのスルー())
tensor_to_numpy = tensor.numpy()
ハハ、それはライン上の機能のnumpyのテンソル()を呼び出すためにnumpyの唯一の必要性へのテンソルターンから、逆に、OKに1により、numpyのターンからテンソルに、唯一TensorFlow超簡単ではありません。それはそう簡単ではない。我々はそれを上に考えなければなりませんTensorFlow。
追加:ここで少しは、GPUとCPUで少し知識を、追加します。TensorFlowのアプリケーション、または機械学習の分野では、非常に複雑なシステムおよび割込みロジック・ユニットが多いため、一般的に大規模なデータ処理は、一般的に、量を処理し、データ速度を処理するGPUは、CPU(CPUよりも大きいです等)、それは通常テンソルデータセットを計算又はGPUに記憶されているであろう。質問があるので、我々は我々が行うこれらのマシンのハードウェア情報をどのように取得しますか?どのように開発する中に入るためにテンソルハードウェアストアを置けばいいの??
印刷(tf.config.experimental.list_physical_devices())#使用可能なデバイスを表示します
機械内部の上記のコードでは、我々は可能なCPUとGPU、以下の結果をプリントアウトすることができます
[[物理(NAME = '/ physical_device:CPU:0'、DEVICE_TYPE = 'CPU')、[物理(NAME = '/ physical_device:GPU:0'、DEVICE_TYPE = 'GPU')]
0とGPU::私たちは、マシンはCPUとGPU、すなわちCPU持っていることがわかります0を、次にこれで、我々は上記の指定された計算とハードウェアに保存されている我々のデータを作ることができ、我々は次のように使用することができます指定します
CPU上#forceのexecuion
tf.device有する( "CPU:0" ): X = tf.random.uniform([1000,1000 ]) #assert指令のx.device.endswith( "CPU:0") time_matmul(x)が # GPUの上の力実行 ( "GPU上で"印刷) tf.device有する( "GPU:0" ): X = tf.random.uniform([1000,1000 ])#assert指令のx.device.endswith( "GPU:0" )time_matmul(X)
私達は私達が私達のテンソルが保存場所を指定するには、このキーワードを使用することができ、上から見ることができます。このコードの第1の部分はCPUに割り当てられている、第二の部分は、GPUに割り当てられます。
- データセット
彼の定義より抽象的なものの、データセット名を示しているが、データセットの意味ですが、実際には、我々は、コンテナは、データセットのテンソルのみテンソルから来る可能性がロードされたとして、複数のテンソルができると考えることができます。しかし、ここで注意すべき小さなディテールですこれらのテンソルは同じでなければならない、または互換性のないエラーがああエラーが発生する場合は、ときに最初のディメンションの複数のテンソル、データセットからということです。私たちは、主要なオーストラリアを必要としています。それでは、データセットを作成する方法を見てみましょうか??
tensor1 = tf.multiply([1,2,3,4,5]、1 )
DATASET1 = tf.data.Dataset.from_tensor_slices(tensor1)
私たちは、この方法from_tensor_slicersで、それは引数の後ろかもしれ最も一般的に私たちのAPIのデータセットを作成するために使用される、第2文は、データセットを作成するプロセスであるコードの最初の文は、テンソルオブジェクトを作成することで、上からそれを見ることができるにもテンソルすることができ複数のテンソルその後、上記の単純なデータセットがあり、我々はデータセットの心配2つのテンソルを参照してください次へ:
C1 = tf.random.uniform([4 ]) C2 = tf.random.uniform([4,10 ]) DATASET2 = tf.data.Dataset.from_tensor_slices(( C1、C2 ))
我々は、上記のコードは、2つのテンソル、すなわちC1、C2を作成し、見ることができます。これは、データセットを介して同一のオブジェクトがこのメソッドをfrom_tensor_slices作成し、我々は、それはタプル二テンソルであるタプル要素のパラメータ内にあることがわかります。注:これは(最初の次元)の第1の2次元テンソルで同じですが、これは同じでなければならない、またはエラーカザフスタンになることを覚えておいてください。今、私たちはデータセットを作成したので、我々はそれの価値の内部を取得する方法???最新バージョン、その後、要素の内部イテレータのデータセットを作成するためにTensorFlowの方法により、以前のバージョンを取得するには、この方法は、のために、中に置き換えられ、廃止されていている以下に示すように、トラバースへの道である、我々実証する最初のデータこのDATASET2に行きます
以下のための要素でDATASET2: プリント(要素) ブレーク
のは、最初のデータChengshayangハロンDATASET2を見てみましょうか?
(<tf.Tensor:ID = 67、形状=()、DTYPE =のfloat32、numpyの= 0.8284787>、<tf.Tensor:ID = 68、形状=(10)、DTYPE =のfloat32、numpyの= 配列([ 0.46768987 、0.4085338、0.06623507、0.16808486、0.7843472 、 0.6430875、0.94050014、0.79995286、0.35672653、0.97420156 ]、 DTYPE =のfloat32)>)
よく見ると、それは、2つのテンソルのオブジェクトが装備されているタプルタプルです。今回はすべてのテンソルデータセットとどのような彼らとバーとの間の関係を理解する必要があります。
- 概要
だから今、私たちは、このセクションでは、基本的なデータ、すなわちテンソル形式、およびデータセットを記述するTensorFlowハを、総括してきます。上記の構造テンソルとデータセット、作成プロセス、コンテンツの取得とに知識の他の側面について語りました。TensorFlowが私たちのnumpyのデータ型と互換性がありますが、いくつかのケースではいくつかの問題があるだろうが、我々はテンソルもnumpyのに基づいていても、後ろのテンソルにできるだけまたはアプリケーション・データなどのプロセスを学習TensorFlowそう。このセクションの焦点は、データセットの内部オブジェクトパラメータテンソルの意味や構造を理解することです。これは、全体TensorFlowの基盤であり、すべてのTensorFlowがデータを処理した後、我々はデータを構造化しても、それは正当なものである、知りません。