tensorflow實現非線性擬合

2021-09-24 12:51:27 字數 1602 閱讀 8555

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

x_data = np.linspace(-0.5, 0.5, 200)[:, np.newaxis] # 使得維度為[200, 1]

noise = np.random.normal(0, 0.02, x_data.shape) # 維度為[200, 1]的正太分布

y_data = np.square(x_data) + noise

# 定義兩個佔位符placeholder

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

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

# 定義神經網路的中間層

w1 = tf.variable(tf.random_normal([1, 10])) # 10個神經元

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

w1_plus_b1 = tf.matmul(x, w1) + b1

output1 = tf.nn.tanh(w1_plus_b1) # 啟用函式tanh()

# 定義神經網路的輸出層

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

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

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

prediction = tf.nn.tanh(w2_plus_b2) # 啟用函式

# 二次代價函式

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())

# 訓練2000次

for i in range(2000):

sess.run(train_step, feed_dict=)

if i % 100 == 0:

print("step: "+str(i))

# 獲取**值

prediction_value = sess.run(prediction, feed_dict=)

plt.figure()

plt.xlabel('x_data')

plt.ylabel('y_data')

plt.scatter(x_data, y_data)

plt.plot(x_data, prediction_value, 'r-', lw=5)

plt.show()

執行結果圖如下:

tensorflow非線性回歸

該程式有輸入層,中間層和輸出層 執行環境 ubuntun menpo queen queen x550ld downloads py python nonliner regression.py coding utf 8 定義乙個神經網路 輸入層乙個元素,中間層10個神經元,輸出層1個元素 impor...

Tensorflow實戰 非線性回歸

通過過乙個最簡單的神經網路 輸入層乙個神經元,隱藏層10個神經元,輸出層1個神經元 來進行非線性回歸。import tensorflow as tf import numpy as np import matplotlib.pyplot as plt 使用numpy生成200個隨機點 從 0.5到0...

Tensorflow 線性回歸與非線性回歸

二次代價函式 均方差 神經網路 1 20 1 w1 tf.variable tf.random normal 1 20 b1 tf.variable tf.zeros 20 wxplus1 tf.matmul x,w1 b1 l1 tf.nn.tanh wxplus1 w2 tf.variable ...