まず、私たちがしなければなりませんか?
素朴な疑問:マシンは、明示的な数式ではない学ぶようにする方法を、任意の値、出力彼の入力に3回?
私たちが何をすべきか:私たちは、出力が加算されたコンピュータを聞かせする必要があり、一見無秩序で、入力データのセットから3倍の法則にほぼ等しいです。
第二に、私たちはどのようにすればよいですか?
一般的な機械学習は、4つのステップに分かれています。
- データを準備します
- 建設モデル
- 反復トレーニング
- モデルを使用して
データ・フェーズを準備し、我々は、収集したデータに関連するタスク、そして私たちは、ニューラルネットワークは、関連する法律を取得する特徴データを学習そのことを、いくつかの反復訓練により、ニューラルネットワークモデルを構築し、利用可能なモデルの形成、そして最終的に我々は解決するためのモデルを使用します問題。
第三には、徐々に試してみてください。
1、データの準備:
ここでは、ノイズ、Y = 3X + Bの組成に「ほぼ等しい」と「等しい」を作るために添加され、Y = 3Xシミュレートされた身体データに対して行います
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
train_X = np.linspace(-1,1,100) #从 [-1.1] 取 100个值 给 train_X
train_Y = 3 * train_X + np.random.randn(100) * 0.3 # 模拟 y = 3 * x + b 利用 np 模拟噪声b
#显示模拟数据点
plt.plot(train_X,train_Y,'ro',label="Original data") #设置图像参数 样式:“ro”就是红色的圆圈
plt.legend() #绘制图例
plt.show() #显示
2、建物モデル:
ニューラルネットワークを描くことができる可視化することができるビルドを学習している今かどうか、実際のプロジェクトの後に、最も明らかです。
tensorflowは、コンピューティングのマップを構築することです。
図計算値:
基本式:
Y = W * X + B(W、Xはベクトル)
W:重量
B:バイアス
トレーニングプロセスにおいてニューラルネットワーク・データ・ストリームは、ニューラルネットワークによって陽性の結果を生成するために、即ち、二つの方向であり、真の値と比較し、次いで逆ニューラルネットワークのパラメータを介して、ニューラルネットワークは、nを介して調整されます結果を生成し、次いで逆調整するために、適切な値に調整ニューラルネットワークパラメータまで公転しています。
- フォワードモデル作成
フォワードモデルは、ニューラルネットワークにより、入力、出力を得るために、単純です
# 占位符 , 用于构建计算图
X = tf.placeholder("float")
Y = tf.placeholder("float")
#设置模型变量
w = tf.Variable(tf.random_normal([1]),name="weight")
b = tf.Variable(tf.random_normal([1]),name="bias")
#定义前向结构
z = tf.multiply(X,w) + b
- 逆モデルを作成し
、ニューラルネットワークによって陽性の結果を生成するために、次に実際の値と比較し、次に調整するニューラルネットワークニューラルネットワークパラメータを復路。
cost = tf.reduce_mean(tf.square(Y-z)) #计算真实值与实际值的平方查
learning_rate = 0.01 #设置学习率
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #设置梯度下降优化
学習速度:速度の調整パラメータを表す、一般に1未満
3、反復トレーニングモデル
モデルが設定された後、我々は反復してモデルを訓練するつもりです。Tensorflowでは、会話がセッションで行われます。
通常、最初のグローバル初期化した後、訓練の繰り返し回数を設定し、セッションを開始すると、ミッションを訓練し始めました。
#设置初始化所有变量
init = tf.global_variables_initializer()
#定义参数
training_epochs = 200
display_step = 2
with tf.Session() as sess:
sess.run(init) #进行初始化
plodata = {"batchsize":[],"loss":[]} #定义字典 存放 批次值 和 损失值
for epoth in range(training_epochs) :
for (x,y) in zip(train_X,train_Y):
sess.run(optimizer,feed_dict={X:x,Y:y})
#显示训练中的详细信息
if epoth % display_step == 0 : #每运行2次
loss = sess.run(cost,feed_dict={X:x,Y:y}) #使用feed 放入数据形成数据流
print("Epoch:",epoth+1,"cost:",loss,"w=",sess.run(w),"b=",sess.run(b)) #打印 相关信息
if not (loss == "NA"): # 将有效信息放入 plodata
plodata["batchsize"].append(epoth)
plodata["loss"].append(loss)
print("Finished !")
print("coss=",sess.run(cost,feed_dict={X:train_X,Y:train_Y}),"w=",sess.run(w),"b=",sess.run(b)) #训练完成显示最近一次计算结果
4、モデルを使用して:
良いモデルのトレーニングの後、我々は使用してテストする必要があります
x= 0.5 #测试输入值
print("x=",x,"y_=",sess.run(z,feed_dict={X:x}))
5、モデルトレーニング可視化:
次の章では、直接話すTensorBoard
第四に、完全なコードを示し:
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
train_X = np.linspace(-1,1,100) #从 [-1.1] 取 100个值 给 train_X
train_Y = 3 * train_X + np.random.randn(100) * 0.3 # 模拟 y = 3 * x + b 利用 np 模拟噪声b
# #显示模拟数据点
# plt.plot(train_X,train_Y,'ro',label="Original data") #设置图像参数 样式:“ro”就是红色的圆圈
# plt.legend() #绘制图例
# plt.show() #显示
# 占位符 , 用于构建计算图
X = tf.placeholder("float")
Y = tf.placeholder("float")
#设置模型变量
w = tf.Variable(tf.random_normal([1]),name="weight")
b = tf.Variable(tf.random_normal([1]),name="bias")
#定义前向结构
z = tf.multiply(X,w) + b
cost = tf.reduce_mean(tf.square(Y-z)) #计算真实值与实际值的平方差 作为 损失值 loss
learning_rate = 0.01 #设置学习率
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #设置梯度下降优化
#设置初始化所有变量
init = tf.global_variables_initializer()
#定义参数
training_epochs = 20
display_step = 2
with tf.Session() as sess:
sess.run(init) #进行初始化
plodata = {"batchsize":[],"loss":[]} #定义字典 存放 批次值 和 损失值
for epoth in range(training_epochs) :
for (x,y) in zip(train_X,train_Y):
sess.run(optimizer,feed_dict={X:x,Y:y})#显示训练中的详细信息
if epoth % display_step == 0 : #每运行2次
loss = sess.run(cost,feed_dict={X:x,Y:y}) #使用feed 放入数据形成数据流
print("Epoch:",epoth+1,"cost:",loss,"w=",sess.run(w),"b=",sess.run(b)) #打印 相关信息
if not (loss == "NA"): # 将有效信息放入 plodata
plodata["batchsize"].append(epoth)
plodata["loss"].append(loss)
print("Finished !")
print("coss=",sess.run(cost,feed_dict={X:x,Y:y}),"w=",sess.run(w),"b=",sess.run(b)) #训练完成显示最近一次计算结果
運動4:
ニューラルネットワークを用いた方法であって、約15戻り、トレーニング時間がノイズ必要等が添加され、そして基本的なステップを有するニューラルネットワークへのニューラルネットワーク処理手順3に入力されます。
あなたの答えをコメントアウトします。