初心者向けディープラーニング(1)データを準備してモデルを構築するためのTensorFlowの基本的な開発手順(順方向+逆方向)

この記事では、ロジスティック回帰を使用して、テンソルフローの基本的な開発手順を示す例として2次元データを適合させます。

例:一見混沌としたデータのセットからy≈2xの法則を見つけます

説明の例:

xとyの間の対応する関係がy≈2xであるデータセットのセットがあるとします。

ディープラーニングには、おおよそ4つのステップがあります。

(1)データの準備
(2)モデルの構築
(3)反復トレーニング
(4)モデルの使用

1.データを準備します

ここでは、式y = 2xを本体として使用し、干渉ノイズを加えることで「=」は「≈」になります。

特定のコードの実装:

#导入所需要的包
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

#生成模拟数据
train_X = np.linspace(-1, 1, 100) #在[-1,1]之间生成100个数作为x
train_Y = 2 * train_X + np.random.randn(*train_X.shape) * 0.3 # 将x乘以2,再加上一个[-1,1]区间的随机数*0.3作为加入的噪声

#通过画散点图显示产生的模拟数据点
plt.plot(train_X, train_Y, 'ro', label='Original data') #画出散点图
plt.legend()#使上述代码产生效果:如图例的名称
plt.show()

ここに画像の説明を挿入

2.モデルを作成します

モデルは、順方向と逆方向の2つの方向に分かれています。

(1)フォワードモデルの作成

次のコードを使用して、単一ニューロンのモデルを作成します

# X,Y为占位符
X = tf.placeholder("float") # 代表x的输入
Y = tf.placeholder("float") # 代表对应的真实值y

# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight") # w初始化为[-1,1]的随机数,形状为一维的数字
b = tf.Variable(tf.zeros([1]), name="bias") # b的初始化是0,形状为一维的数字

# 前向结构
z = tf.multiply(X, W)+ b # x*w+b

(2)逆モデル作成

データフローニューラルネットワークトレーニングプロセスには、2つの方向(順方向と逆方向)があります。順方向に予測値を生成、観測値の比較ギャップを生成し、次にパラメータを逆方向に調整してから、順方向の予測値と観測値を再度生成します。そのためパラメータが適切な値に調整されるまでサイクルが続きます。バックプロパゲーションでは、パラメータを正しく調整するために、いくつかのアルゴリズムを導入する必要があることがよくあります。

#反向优化
cost =tf.reduce_mean( tf.square(Y - z)) #cost是生成的预测值与真实值的平方差
learning_rate = 0.01 #设定学习率为0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #GradientDescentOptimizer()函数是一个封装好的梯度下降算法

PS:

  • 学習率の値は通常1未満です。値が大きいほど調整の速度は速くなりますが、正確ではありません。値が小さいほど調整の精度は高くなりますが、速度は遅くなります。したがって、学習率の決定は、実際の状況に応じて決定する必要があります。
  • 勾配降下アルゴリズムの簡単な理解は、学習パラメーターの速度に応じて学習率を変更することです。

おすすめ

転載: blog.csdn.net/qq_45154565/article/details/109635933