線性擬合的思路:
線性擬合**:
1import
tensorflow as tf
2import
numpy as np
3import
matplotlib.pyplot as plt4#
%%圖形繪製
5def
data_show(x,y,w,b):
6plt.figure()
7 plt.scatter(x,y,marker='.'
)8 plt.scatter(x,(w*x+b),marker='.'
)9plt.show()10#
%%生成資料
11 x_data=np.random.rand(100).astype(np.float32)
12 y_data=0.1*x_data + 0.313#
%%建立結構
14 weights=tf.variable(tf.random_uniform([1],-1.0,1.0))#
平均分布的隨機數
15 biases=tf.variable(tf.zeros([1]))
16 y=weights*x_data+biases
17 loss=tf.reduce_mean(tf.square(y-y_data)) #
損失函式,reduce_mean:計算乙個張量的各維度的元素的均值
18 optimizer=tf.train.gradientdescentoptimizer(0.5)#
優化器 學習率選擇#.gradientdescentoptimizer()實現梯度下降演算法的優化器。
19 train=optimizer.minimize(loss)#
優化器優化目標選擇,使loss 最小
20 init=tf.global_variables_initializer() #
初始化全變數節點21#
%%22
###訓練部分
神經網路擬合二次函式(帶雜訊)
**:
import補充知識 :1.tf.random.uniform() 符合均勻分布--------tf.random.normal() 符合正太分布2.np.newaxis補充知識:tensorflow as tf
import
numpy as np
#%%
def add_layer(input,in_size,out_size,activation_function=none):
weights=tf.variable(tf.random_normal([in_size,out_size]))
#tf.random.uniform()均勻分布,tf.random.normal() 正太分布
biases=tf.variable(tf.zeros([1,out_size])+0.1)#
biases 的維度是1行,weights的列
#輸入是1*input,weights是input*output,output是1*output,所以biases是1*output
wx_plus_b=tf.matmul(input,weights)+biases
if activation_function==none:
output=wx_plus_b
else:#
加入啟用函式
output=activation_function(wx_plus_b)
return output#
返回output #%%
x_data= np.linspace(-1,1,300)[:,np.newaxis] #
np.linspace(),-1到1進行300等分的陣列得到1*300,再進行變換為300*1
noise=np.random.normal(0,0.05,x_data.shape)
y_data=np.square(x_data)-0.5+noise#%%
#佔位符,feed_dict={}進行賦值
xs=tf.placeholder(tf.float32,[none,1])
ys=tf.placeholder(tf.float32,[none,1])
ll=add_layer(xs,1,10,activation_function=tf.nn.relu)#
啟用函式是relu
prediction=add_layer(ll,10,1,activation_function=none)
reduce_sum=tf.reduce_sum(tf.square(ys-prediction),reduction_indices=1)
loss=tf.reduce_mean(reduce_sum)
#tf.reduce_sum:計算乙個張量的各個維度的元素之和。
#tf.reduce_mean():取平均值。
train_step=tf.train.gradientdescentoptimizer(0.1).minimize(loss)
init=tf.global_variables_initializer()
with tf.session() as sess:
sess.run(init)
for i in range(1000):
sess.run(train_step,feed_dict=)
#if i % 50 ==0:
#print(sess.run(loss,feed_dict=))
if i==999:
print(sess.run(tf.square(ys - prediction),feed_dict=))
#輸出的是300行1列 [300,1]
#[[ 4.99251783e-02]
#[ 1.65489316e-02]
#..........
#[ 3.05732153e-02]]
#經過,tf.reduce_sum(,reduction_indices=1)後為了:
if i==999:
print(sess.run(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=1), feed_dict=))
#輸出的是1行300列[300]------>[1,2,3,.....]就叫做[300],共計300個元素
#[ 3.73238046e-03 ..... 1.45917088e-02]
import numpy as np
a=np.array([1,2,3,4,5])#creat a array
b=a[:,np.newaxis]
#a---->[1,2,3,4,5]
#b---->[[1],[2],[3],[4],[5]] 5行1列 (5,1)
c=a[np.newaxis,:]
#c---->[[1,2,3,4,5]] 1行5列 (1,5)
3.特別注意:reduction_indices=[1]可知是指定操作座標軸的函式,即把[300,1]按行求和後拼接為新的陣列,也就是[300]的尺寸
Tensorflow學習筆記2
參考 1 classification分類學習 from tensorflow.examples.tutorials.mnist import input data mnist input data.read data sets mnist data one hot true mnist庫是手寫體數...
Tensorflow學習之旅 2
暑假就在接觸tensorflow了,但是一直斷斷續續的,所以現在又開始撿起來繼續學。ps 我用的 源於 大佬寫的很好,我也是跟著他的 在他的 上,寫上 自己的理解。import tensorflow as tf 定義 定義乙個變數,可以理解為 var是在 的命名,而myvar是tensorflow變...
tensorflow學習小記2
乙個完整的神經網路例項 在乙個模擬資料及上訓練神經網路來訓練二分類問題 import tensorflow as tf from numpy.random import randomstate 雖然報錯並不影響使用,這在random中是私有 batch size 8 w1 tf.variable t...