「Tensorflow Machine Learning Practice Guide」の研究ノートと対応するバージョンコード

バージョン1.12のTensorFlowクックブック

TellnsorFlow-1.12の「Tensorflow Machine Learning Practice Guide」のコード

「Tensorflow Machine Learning Practice Guide」という本を研究していたとき、Tensorflow-1.12のバージョンを使用しました。多くのコードを実行して問題なく実行できますが、関数の名前が変更されてコードが正しく実行されない場合があるため、 Tensorflow-1.12のコードがここにアップロードされています。私のような新人にとって少し助けになれば幸いです。疑問がある場合は、作者のソースコード[1]とTensorflowの公式ウェブサイトを参照してください。メッセージを残してお互いから学ぶこともできます〜_

いくつかの散発的なメモも以下に記録されています

第3章TensorFlowに基づく線形回帰

3.2

この2つの例を見て、Ax = bと書いても、結果はxになることがわかりました。このxは実際の係数行列です。
コードのコレスキー行列分解を理解し、主に関数tf.matrix_solveの意味を知っている

3.5

for i in range(iterations):
rand_index = np.random.choice(len(x_vals), size=batch_size)
rand_x = np.transpose([x_vals[rand_index]])
rand_y = np.transpose([y_vals[rand_index]]) 

Maoのトレーニングは転置されることを知っています。これは、ここでのデータの形式がこのようであるため、転置する必要があるためです。

3.9

出生時体重データを利用しましたが、ソースリンクが開けず、githubのソースコードでデータが見つかりましたが、こちらのデータは処理され、結果は長時間トスでした。次のコードは最初は正しくありません。トレーニングの結果は完全に間違っています

# 这里的数据错误,导致最后结果和书上不一样,书上写的是x[0], x[2:9],但是索引是从0开始的,坑爹
# 书上用的是源数据,而我这里用的是处理过的数据,书上也说了去掉了实际出生体特征和ID两列,估计是源数据里面的第一列和最后一列
y_vals = np.array([x[0] for x in birth_data])
x_vals = np.array([x[1:8] for x in birth_data])

Chapter4 TensorFlowベースのサポートベクターマシン

サポートベクターマシンは、マージンを最大化する超平面を見つけることです。それで、どのように尋ねますか?最後に、ラグランジュ乗数が使用され、各超平面について、超平面上の点(つまり、サポートベクトル)のみが極値に対して有効であり、超平面外の他の点は計算に関与しません。したがって、任意の超平面では、サポートベクトルがトレーニングデータのマージンを最大にする場合、それは最適な超平面です。

毎回正確にデータを分離することはできません。パラメータ推定を調整する必要があります。さらに、トレーニングの数を1000回に増やします。ほとんどの場合、良いデータを取得できるたびに、トレーニングデータセットとテストデータセットの正確度はほぼ100%です。これは主にトレーニング時間が不十分であることを意味します

4.4 TensorFlowでのカーネル関数の使用

  • tf.reduce_sum
    指定された次元の合計、1つの次元は実行後に削減されます
x = tf.constant([[1, 1, 1], [1, 1, 1]])
tf.reduce_sum(x) # 6
# 第0维相加[1, 1, 1] + [1, 1, 1]
tf.reduce_sum(x, 0) # [2, 2, 2]
# 第1维相加,[1+1+1], [1+1+1]
tf.reduce_sum(x, 1) # [3, 3]
tf.reduce_sum(x, 1, keep_dims=True) # [[3], [3]]
tf.reduce_sum(x, [0, 1]) # 6
  • ガウスカーネル関数
    は最初は理解しにくい k ( x i , p i ) = e y x i p i 2 k(x_i、p_i)= e ^ {-y {|| x_i-p_i ||} ^ 2}
    最後に、正方形が分解された後にコードが記述されていることがわかりました。 ( a b ) 2 = a 2 2 a b + b 2 {(a-b)} ^ 2 = a ^ 2-2ab + b ^ 2 ここで、a = x_data [0]、b = x_data [1]。distは二乗値であるため
# Gaussian (RBF) kernel
gamma = tf.constant(-50.0)
dist = tf.reduce_sum(tf.square(x_data), 1)
dist = tf.reshape(dist, [-1,1])
sq_dists = tf.add(tf.sub(dist, tf.mul(2., tf.matmul(x_data, tf.transpose(x_data)))), tf.transpose(dist))
my_kernel = tf.exp(tf.mul(gamma, tf.abs(sq_dists)))

Chapter5最近傍法

5.1最近傍法の紹介

  • numpy.ptp関数
    (最大値-最小値)に相当する計算範囲

5.3テキストの距離を測定する方法

  • 異なる次元でのtf.subtractの減算の意味:クロス減算
# 1.这里的x_data_train 减去 扩维的x_data_test,是为了让x_data_train的每一分数据都能减去x_data_test的每一分数据。这样才能计算,任意一个x_data_test的数据到x_data_train任意一个数据的距离
# 2.降维:把每一分数据相减后的和作为两份数据之前的距离,求的距离就是cols_used列的和
distance = tf.reduce_sum(tf.abs(tf.subtract(x_data_train, tf.expand_dims(x_data_test,1))), reduction_indices=2)

5.4 TensorFlowを使用してハイブリッド距離計算を実現する

  • numpy.std
    は特定の次元の標準偏差を検出します。x_vals.shape=(506、10)の場合、最終結果は形状(10、)の1次元配列になります

  • tf.diag
    は対角行列を生成し、他の値は0で埋められます

  • tf.tile
    *この操作は、入力を複数回複製して新しいテンソルを作成します。*

  • tf.transposeの2番目のパラメーターperm
    は、指定された次元の変換を指定します

  • tf.argmax
    tf.argmaxは、numpy np.argmaxを使用するテンソルフローによって実装されます。これにより、特定の次元のテンソルオブジェクトの最大値のインデックス値を取得できます。これは、メトリック(accなど)の計算でよく使用されます。

Chapter6ニューラルネットワークアルゴリズム

6.4 TensorFlowを使用して単層ニューラルネットワークを実装する

  • ゲート関数
    以前のゲート関数はそれが何を意味するのか知りません、実際、それは単にニューラルネットワークの各ノードの表現です

6.5 TensorFlowを使用してニューラルネットワークの一般的なレイヤーを実装する

  • 層関数思考データ

入力データ[batch_size、width、height、channels]の考え方です。batch_sizeは、前日に学習したアニメーションのバッチデータが3つまたは3つの画像データであるのと同様に、バッチで処理される画像の数です。幅と高さは画像の幅と高さで、わかりやすいです。最後のチャネルはカラーチャネル、白黒は1(ミニストデータなど)、RGBは3です。

6.8 TensorFlowを使用して、ニューラルネットワークに基づく三目並べを実装する

モデルをトレーニングするために、いくつかの異なるボードに対して最適な応答が続くボード位置のリストを用意します。対称性に関して異なるボード位置のみを考慮することで、トレーニングするボードの量を減らすことができます。 Tic Tac Toeボードの非同一変換は、90度、180度、270度の回転(いずれかの方向)、水平反射、および垂直反射です。この考えから、最適なボードのショートリストを使用します。移動し、2つのランダムな変換を適用し、それをニューラルネットワークにフィードして学習します。これ
は、対称性により、ファイルからデータを読み取らなくても、回転とミラーリングによって多くの異なるデータを生成できることを意味します

画像

Chapter8畳み込みニューラルネットワーク

8.4既存のCNNモデルを再トレーニングする

python data / build_image_data.py --train_directory =“ temp / train_dir /” --validation_directory =“ temp / validation_dir” --output_directory =“ temp /” --labels_file = "temp / cifar10_labels.txt

python data / build_image_data.py --train_directory = "…/…/…/…/…/ 'TensorFlow Machine Learning Cookbook / dataset' / train_dir" --validation_directory = "…/…/…/…/…/ 'TensorFlow Machineラーニングクックブック '/ dataset / validation_dir "--output_directory ="…/…/…/…/…/' TensorFlow Machine Learning Cookbook '/ dataset / "--labels_file =" "…/…/…/…/…/' TensorFlow Machine Learning Cookbook '/ dataset / cifar10_labels.txt "

エラー:

(ENV) E:\study\machinelearning\code\models\research\inception\inception>python data/build_image_data.py --train_directory="temp/train_dir/" --validation_directory="temp/validation_dir" --output_directory="temp/" --labels_file="temp/cifar10_labels.txt
Saving results to temp/
Determining list of input files and labels from temp/validation_dir.
WARNING:tensorflow:From data/build_image_data.py:369: FastGFile.__init__ (from tensorflow.python.platform.gfile) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.gfile.GFile.
Traceback (most recent call last):
  File "data/build_image_data.py", line 437, in <module>
    tf.app.run()
  File "E:\study\machinelearning\ENV\lib\site-packages\tensorflow\python\platform\app.py", line 125, in run
    _sys.exit(main(argv))
  File "data/build_image_data.py", line 431, in main
    FLAGS.validation_shards, FLAGS.labels_file)
  File "data/build_image_data.py", line 417, in _process_dataset
    filenames, texts, labels = _find_image_files(directory, labels_file)
  File "data/build_image_data.py", line 369, in _find_image_files
    labels_file, 'r').readlines()]
  File "E:\study\machinelearning\ENV\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 188, in readlines
    self._preread_check()
  File "E:\study\machinelearning\ENV\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 85, in _preread_check
    compat.as_bytes(self.__name), 1024 * 512, status)
  File "E:\study\machinelearning\ENV\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 528, in __exit__
    c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.NotFoundError: NewRandomAccessFile failed to Create/Open: temp/cifar10_labels.txt : ϵͳ\udcd5Ҳ\udcbb\udcb5\udcbdָ\udcb6\udca8\udcb5\udcc4·\udcbe\udcb6\udca1\udca3
; No such process

フルパスソリューションに変更:参照[1]

python data/build_image_data.py --train_directory="E:/temp/train_dir/" --validation_directory="E:/temp/validation_dir" --output_directory="E:/temp/" --labels_file="E:/temp/cifar10_labels.txt

8.5 TensorFlowを使用してマスターペインティングを模倣する

githubコードが更新されました、それは本当に素晴らしいです、[1]を参照してください

def vgg_network(network_weights, init_image):
 network = {}
 image = init_image
 for i, layer in enumerate(vgg_layers):
  if layer[0] == 'c':
   weights, bias = network_weights[i][0][0][0][0]
   weights = np.transpose(weights, (1, 0, 2, 3))
   bias = bias.reshape(-1)
   conv_layer = tf.nn.conv2d(image, tf.constant(weights), (1,1,1,1), 'SAME')
   image = tf.nn.bias_add(conv_layer, bias)
  elif layer[0] == 'r':
   image = tf.nn.relu(image)
  else:
   image = tf.nn.max_pool(image, (1,2,2,1), (1,2,2,1), 'SAME')
  network[layer] = image
 return (network)

元のコードはレイヤー[1]ですが、レイヤー[0]に変更するだけです。この問題はリファレンス[1]からも見つかります。

Chapter9再帰的ニューラルネットワーク

9.2 TensorFlowを使用してスパム予測のRNNモデルを実装する

  • 正規表現について
Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。

语法:

re.sub(pattern, repl, string, count=0, flags=0)
参数:

pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

来源: https://www.runoob.com/python/python-reg-expressions.htm

text_string = re.sub(r '([^ \ s \ w] | _ | [0-9])+'、 ''、text_string)
この文は、指定された文字を空白 ''で置き換える、つまり
(0 )括弧内の表現に一致することは、グループも意味します
(1)[...]は個別にリストされた文字のグループを表すために使用されます
(2)[ …]:は[]にない文字を意味し、[ \ s \ w]は任意の英数字の下線と空白文字の除外
(3)\ s:[\ t \ n \ r \ f]と同等の任意の空白文字と一致
(4)\ w:英数字の下線と一致
(5)|:または
(6)re +:1つ以上の式に一致します。
したがって、この文は文字以外の文字に一致し、他のすべての文字は置き換えられます。次の* | _ | [0-9] *は、アンダースコアと数字を挿入するためのものです。それを数えなさい。しかし、最終的な計算に空白文字が含まれているかどうかはわかりません!明らかに除外された

第11章TensorFlowの高度なアプリケーション

11.2 TensorFlowの可視化:Tensorboard

Tensorboardのアドレスのログを参照してください:http:// localhost:6006

Chromeを開くことができません。次のコマンドに変更してください:

tensorboard --logdir=tensorboard/ --host localhost --port 8088

コード

githubに置きます。参照[2]

参考資料

[1] Tensorflowクックブック
[2] github

41件のオリジナル記事を公開 賞賛7 20,000回以上の閲覧

おすすめ

転載: blog.csdn.net/pkxpp/article/details/92412896