tensorflow 2の基本

いよいよ機械学習が始まりました!

もちろん機械学習にはtensorflow + gpuが必要です(ただし、/(ㄒoㄒ)/ ~~はありません)

tensorflow + cpuの学習の基本は問題ないはずです

以前、ウーエンダのビデオを直接見ましたが、アルゴリズムの原理を理解した後、まったく実現することが不可能であることに気付きました...そして、tfの関数の機能を理解できませんでした。

今回は体系的に再検討していきます

tf 2に基づく機械学習を長時間行うためのリソースを探していますが、tf 1.0を使用するには古すぎないものもあります。pptを読んでください。

最後に、このビデオが最も詳細だと思います

https://www.bilibili.com/video/BV1ua4y1t7Ws?

彼は実際の戦闘例を段階的に手動で実装し、tf関数を使用して単純化し、原理と実装よりよく理解しています。

 

次のテキスト:

実際、tfとnumpyは基本的な機能が似ていますが、tf 2を使用すると、numpyとの互換性も向上します

tf.zeros(shape、dtype = tf.float32)全0

tf.zeros_like(x)は、xのディムから直接0行列を作成します<==> tf.zeros(x.shape)

tf.ones(shape、dtpye = tf.float32)全1 

tf.ones(x)    はスカラーを作成します| dim = 0 

tf.ones([])   は、値xの1 * 1ベクトルを作成します

tf.ones([x])  create vector shape = x

tf.math.log:底がeの対数関数

tf.exp:指数関数

tf.uniform(shape、minval、maxval、dtpye)均一に変化する配列

tf.random.normal(形状、平均(平均デフォルト0)、標準偏差(分散デフォルト1))

tf.fill(dim、value)フィル番号

上記はnumpyと同じです


tf.gather(a、axis、idx)軸は軸を指定でき、この軸はaのデータをこのリストのidxの順序で受け取ります

a.shape = [4,28,28,1] idx = [1,28,28,4]

a.shape = [1,28,28 ,, 4]は、a ==> [1、x]をidxに変更することと同じです。

tf.constant(値、形状)塗りつぶし数

x.ndimは次元を返します

xxx = tf.covert_to_tensor(name、dtype)numpyをテンソルタイプに変換

x.numpy()からnumpy

tf.is_tensor(x)xがテンソル型かどうかを判別

tf.random.shuffle(x)x配列をランダムにシャッフルします

tf.reshape(xx、shape)はxテンソルを形状に変換します

tf.reshape(xx、[-1、xxx])-1は、この次元のすべてを表します

たとえば、mnistデータ、バッチ= 128の場合、最後のグループは[128,28,28,1]を満たすことができません

その後、tf.reshape(x、[-1,28,28,1])はエラーを報告しません

 

tf.expand_dim(xx、axis)xxテンソルは軸の次元を増やします(軸は0から始まります)

tf.transpose(a、ベクトル([x1、x2、x3、x4]など))は
、元の画像を変換すること同じです。たとえば、元の画像
は[n、h、w、c]です。vector = [0,3,2,1]
==> [n、c、w、h]これにより、コンテンツが「本質」を変更しないようになります

tf.one_hot(x、depth)はxを1_depth one_hotベクトルに変換します

tf.concat([x1、x2、xn]、axis)xiはテンソルであり、axisはテンソルがスプライスされる軸を表します

たとえば、軸= 0、[[x1]、[x2]]、軸= 1、[[x1、x2]]

tf.squeeze(x、axis)軸を削除

tf.split(xx、list、axis)は、軸とリストに従ってxxテンソルを他のテンソルに分割します

たとえば、axis = 0、xx = [[x1]、[x2]、[x3]、[x4]]、list = [1:2:1]
出力:[x1] [[x2]、[x3]] [x4 ]
リストが数値の場合、リストテンソルに分割されます

一般的な機械学習では、次元にはすべて「意味」があります。

dim = 3

文:いくつかの文があり、各文にはいくつかの単語があり、各単語は次のように見なされる次元ベクトルの数

[num、len、vector_dim]

dim = 4

写真:写真の数、各写真のサイズ(h、w)、いくつかのチャネルがあります

[数値、高さ、重量、チャネル]

dim = 5 |わからない...

つまり、タスク全体を複数のタスクに分割して同時に処理し、その都度の処理数を最初の次元とする

[バッチ、num、h、w、rgb]

放送:

これは、特に呼び出す必要がない最適化方法です

簡単に言えば、2つの操作の寸法を自動的に一致させます

例:[3,4,5,7] + [3]

<==> [3,4,5,7] + [3,1,1,1]は、ディメンション1が自動的に追加されない場合、同じディメンションであるかどうかにかかわらず、右から左に一致します

<==> [3,4,5,7] + [3,4,5,7]は、すべて1を高次元の等しい次元に変換します

[3、4、5、6] + [1、4、5、1]

<==> [3、4、5、6]
はるかに便利

 

おすすめ

転載: www.cnblogs.com/cherrypill/p/12740005.html