日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TensorFlow学习笔记(九)tf搭建神经网络基本流程

發(fā)布時間:2024/1/23 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TensorFlow学习笔记(九)tf搭建神经网络基本流程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 搭建神經(jīng)網(wǎng)絡(luò)基本流程

定義添加神經(jīng)層的函數(shù)

1.訓練的數(shù)據(jù)
2.定義節(jié)點準備接收數(shù)據(jù)
3.定義神經(jīng)層:隱藏層和預測層
4.定義 loss 表達式
5.選擇 optimizer 使 loss 達到最小

然后對所有變量進行初始化,通過 sess.run optimizer,迭代 1000 次進行學習:

import tensorflow as tf import numpy as np# 添加層 def add_layer(inputs, in_size, out_size, activation_function=None):# add one more layer and return the output of this layerWeights = tf.Variable(tf.random_normal([in_size, out_size]))biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)Wx_plus_b = tf.matmul(inputs, Weights) + biasesif activation_function is None:outputs = Wx_plus_belse:outputs = activation_function(Wx_plus_b)return outputs# 1.訓練的數(shù)據(jù) # Make up some real data x_data = np.linspace(-1,1,300)[:, np.newaxis] noise = np.random.normal(0, 0.05, x_data.shape) y_data = np.square(x_data) - 0.5 + noise# 2.定義節(jié)點準備接收數(shù)據(jù) # define placeholder for inputs to network xs = tf.placeholder(tf.float32, [None, 1]) ys = tf.placeholder(tf.float32, [None, 1])# 3.定義神經(jīng)層:隱藏層和預測層 # add hidden layer 輸入值是 xs,在隱藏層有 10 個神經(jīng)元 l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu) # add output layer 輸入值是隱藏層 l1,在預測層輸出 1 個結(jié)果 prediction = add_layer(l1, 10, 1, activation_function=None)# 4.定義 loss 表達式 # the error between prediciton and real data loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))# 5.選擇 optimizer 使 loss 達到最小 # 這一行定義了用什么方式去減少 loss,學習率是 0.1 train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)# important step 對所有變量進行初始化 #init = tf.initialize_all_variables() init = tf.global_variables_initializer() sess = tf.Session() # 上面定義的都沒有運算,直到 sess.run 才會開始運算 sess.run(init)# 迭代 1000 次學習,sess.run optimizer for i in range(1000):# training train_step 和 loss 都是由 placeholder 定義的運算,所以這里要用 feed 傳入?yún)?shù)sess.run(train_step, feed_dict={xs: x_data, ys: y_data})if i % 50 == 0:# to see the step improvementprint(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))

2. 主要步驟的解釋:

import tensorflow as tf import numpy as np
  • 導入或者隨機定義訓練的數(shù)據(jù) x 和 y:
x_data = np.random.rand(100).astype(np.float32) y_data = x_data*0.1 + 0.3
  • 先定義出參數(shù) Weights,biases,擬合公式 y,誤差公式 loss:
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) biases = tf.Variable(tf.zeros([1])) y = Weights*x_data + biases loss = tf.reduce_mean(tf.square(y-y_data))
  • 選擇 Gradient Descent 這個最基本的 Optimizer:
optimizer = tf.train.GradientDescentOptimizer(0.5)
  • 神經(jīng)網(wǎng)絡(luò)的 key idea,就是讓 loss 達到最小:
train = optimizer.minimize(loss)
  • 前面是定義,在運行模型前先要初始化所有變量:
init = tf.initialize_all_variables()
  • 接下來把結(jié)構(gòu)激活,sesseion像一個指針指向要處理的地方:
sess = tf.Session()
  • init 就被激活了,不要忘記激活:
sess.run(init)
  • 訓練201步:
for step in range(201):
  • 要訓練 train,也就是 optimizer:
sess.run(train)
  • 每 20 步打印一下結(jié)果,sess.run 指向 Weights,biases 并被輸出:
if step % 20 == 0: print(step, sess.run(Weights), sess.run(biases))

所以關(guān)鍵的就是 y,loss,optimizer 是如何定義的。


總結(jié)

以上是生活随笔為你收集整理的TensorFlow学习笔记(九)tf搭建神经网络基本流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。