Tensorflow學習教程 非線性回歸

2022-06-11 19:24:14 字數 3759 閱讀 4144

自己搭建神經網路求解非線性回歸係數

**

#coding:utf-8

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

#使用numpy 生成200個隨機點

x_data = np.linspace(-0.5,0.5,200)[:,np.newaxis] #x_data:200行1列 數值在-0.5到0.5之間

noise = np.random.normal(0,0.02,x_data.shape)#noise :200行1列

y_data = np.square(x_data) + noise #y_data 200行1列

#定義兩個placeholder

x = tf.placeholder(tf.float32, [none,1]) #x:任意行 1列

y = tf.placeholder(tf.float32, [none,1]) #y:任意行 1列

#輸入的是乙個數 輸出的也是乙個數 因此輸入層和輸出層都是乙個神經元

#定義乙個神經網路中間層 可以是任意個神經元 例如10個

#定義神經網路中間層

weights_l1 = tf.variable(tf.random_normal([1,10])) #1行10列

biase_l1 = tf.variable(tf.zeros([1,10])) # 1,10

wx_plus_b_l1 = tf.matmul(x, weights_l1)+biase_l1 #x被正式賦值之後是200行1列 tf.matmul(x, weights_l1)結果是200行10列 而biase_l1是1行10列 那麼這倆怎麼相加呢 在python裡面 200行10列的a向量+1行10列的b向量, 相當於給a向量每行加了b向量

l1 = tf.nn.tanh(wx_plus_b_l1) #使用雙曲正切函式作為啟用函式

#定義神經網路輸出層

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

biase_l2 = tf.variable(tf.zeros([1,1]))

wx_plus_b_l2 = tf.matmul(l1,weights_l2) + biase_l2

prediction = tf.nn.tanh(wx_plus_b_l2)

#二次代價函式

loss = tf.reduce_mean(tf.square(y - prediction))

#使用梯度下降法

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

with tf.session() as sess:

#變數初始化

sess.run(tf.global_variables_initializer())

for _ in range(2000):

sess.run(train_step, feed_dict=)

#迭代2000次之後所有的權重值都求出來了

#獲得**值

prediction_value = sess.run(prediction,feed_dict=)

#畫圖plt.figure()

plt.scatter(x_data,y_data) #畫出散點圖

plt.plot(x_data,prediction_value,'r-',lw=5) #畫出折線圖

plt.show()

結果

分類: 深度學習

自己搭建神經網路求解非線性回歸係數

**

#coding:utf-8

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

#使用numpy 生成200個隨機點

x_data = np.linspace(-0.5,0.5,200)[:,np.newaxis] #x_data:200行1列 數值在-0.5到0.5之間

noise = np.random.normal(0,0.02,x_data.shape)#noise :200行1列

y_data = np.square(x_data) + noise #y_data 200行1列

#定義兩個placeholder

x = tf.placeholder(tf.float32, [none,1]) #x:任意行 1列

y = tf.placeholder(tf.float32, [none,1]) #y:任意行 1列

#輸入的是乙個數 輸出的也是乙個數 因此輸入層和輸出層都是乙個神經元

#定義乙個神經網路中間層 可以是任意個神經元 例如10個

#定義神經網路中間層

weights_l1 = tf.variable(tf.random_normal([1,10])) #1行10列

biase_l1 = tf.variable(tf.zeros([1,10])) # 1,10

wx_plus_b_l1 = tf.matmul(x, weights_l1)+biase_l1 #x被正式賦值之後是200行1列 tf.matmul(x, weights_l1)結果是200行10列 而biase_l1是1行10列 那麼這倆怎麼相加呢 在python裡面 200行10列的a向量+1行10列的b向量, 相當於給a向量每行加了b向量

l1 = tf.nn.tanh(wx_plus_b_l1) #使用雙曲正切函式作為啟用函式

#定義神經網路輸出層

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

biase_l2 = tf.variable(tf.zeros([1,1]))

wx_plus_b_l2 = tf.matmul(l1,weights_l2) + biase_l2

prediction = tf.nn.tanh(wx_plus_b_l2)

#二次代價函式

loss = tf.reduce_mean(tf.square(y - prediction))

#使用梯度下降法

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

with tf.session() as sess:

#變數初始化

sess.run(tf.global_variables_initializer())

for _ in range(2000):

sess.run(train_step, feed_dict=)

#迭代2000次之後所有的權重值都求出來了

#獲得**值

prediction_value = sess.run(prediction,feed_dict=)

#畫圖plt.figure()

plt.scatter(x_data,y_data) #畫出散點圖

plt.plot(x_data,prediction_value,'r-',lw=5) #畫出折線圖

plt.show()

結果

tensorflow教程學習三深入MNIST

載入資料 from tensorflow.examples.tutorials.mnist import input data mnist input data.read data sets mnist data one hot true 我們使用interactivesession類可以更加靈活地...

莫煩tensorflow系列教程學習

1.普通機器學習 函式係數 y 0.1x 0.3 coding gbk import tensorflow as tf import numpy as np 生成資料,y 0.1x 0.3 x data np.random rand 100 astype np.float32 y data x da...

安裝TensorFlow教程

1.安裝anaconda 2.建立乙個conda環境,命名為tensorflow conda create n tensorflow3.用以下命令進入conda環境 source activate tensorflow tensorflow 進入tensorflow後的顯示符4.安裝tensorfl...