06 使用Tensorflow擬合x與y之間的關係

2022-07-05 01:39:14 字數 2037 閱讀 6612

看**:

import

tensorflow as tf

import

numpy as np

#構造輸入資料(我們用神經網路擬合x_data和y_data之間的關係)

x_data = np.linspace(-1,1,300)[:, np.newaxis] #

-1到1等分300份形成的二維矩陣

noise = np.random.normal(0,0.05, x_data.shape) #

噪音,形狀同x_data在0-0.05符合正態分佈的小數

y_data = np.square(x_data)-0.5+noise #

x_data平方,減0.05,再加噪音值

#輸入層(1個神經元)

xs = tf.placeholder(tf.float32, [none, 1]) #

佔位符,none表示n*1維矩陣,其中n不確定

ys = tf.placeholder(tf.float32, [none, 1]) #

佔位符,none表示n*1維矩陣,其中n不確定

#隱層(10個神經元)

w1 = tf.variable(tf.random_normal([1,10])) #

權重,1*10的矩陣,並用符合正態分佈的隨機數填充

b1 = tf.variable(tf.zeros([1,10])+0.1) #

偏置,1*10的矩陣,使用0.1填充

wx_plus_b1 = tf.matmul(xs,w1) + b1 #

矩陣xs和w1相乘,然後加上偏置

output1 = tf.nn.relu(wx_plus_b1) #

啟用函式使用tf.nn.relu

#輸出層(1個神經元)

w2 = tf.variable(tf.random_normal([10,1]))

b2 = tf.variable(tf.zeros([1,1])+0.1)

wx_plus_b2 = tf.matmul(output1,w2) +b2

output2 =wx_plus_b2#損失

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-output2),reduction_indices=[1])) #

在第一維上,偏差平方後求和,再求平均值,來計算損失

train_step = tf.train.gradientdescentoptimizer(0.1).minimize(loss) #

使用梯度下降法,設定步長0.1,來最小化損失

#初始化

init = tf.global_variables_initializer() #

初始化所有變數

sess =tf.session()

sess.run(init)

#變數初始化#訓練

for i in range(1000): #訓練

1000次

_,loss_value = sess.run([train_step,loss],feed_dict=) #

進行梯度下降運算,並計算每一步的損失

if(i%50==0):

print(loss_value) #

每50步輸出一次損失

輸出:0.405348

0.00954485

0.0068925

0.00551958

0.00471453

0.00425206

0.00400382

0.00381883

0.00367445

0.00353349

0.00341325

0.00330487

0.00321128

0.00313468

0.0030646

0.0030014

0.00294802

0.00290179

0.0028618

0.00282344

可以看到,隨機訓練的進行,損失越來越小,證明擬合越來越好。

06 使用Tensorflow擬合x與y之間的關係

看 import tensorflow as tf import numpy as np 構造輸入資料 我們用神經網路擬合x data和y data之間的關係 x data np.linspace 1,1,300 np.newaxis 1到1等分300份形成的二維矩陣 noise np.random...

Tensorflow基本使用

使用 tensorflow,你必須明白 tensorflow tensorflow 是乙個程式設計系統,使用圖來表示計算任務.圖中的節點被稱之為 op operation 的縮寫 乙個 op 獲得 0 個或多個tensor,執行計算,產生 0 個或多個tensor.每個 tensor 是乙個型別化的...

TensorFlow使用說明

採用資料流圖,首先建立乙個資料流流圖,然後再將我們的資料 資料以張量tensor 存在,放在資料流圖中計算,節點 node 在圖中表示數學操作,圖中線 edge 則表示節點間相互聯絡的多維資料陣列,即張量 tensor 訓練模型時tensor會不斷以資料流圖中的乙個節點flow到另乙個節點。sess...