import tensorflow as tf
#創(chuàng)建一個(gè)神經(jīng)層
def add_layer(inputs,in_size,out_size,activation_function=None):
? ? #這里激勵(lì)函數(shù)默認(rèn)為0,則可認(rèn)為激勵(lì)函數(shù)為線性
? ? Weights=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)+biases
? ? #還未被激活的值被賦予在Wx_plus_b中肯污,下一步是去激活他
? ? if activation_function is None:
? ? ? ? outputs=Wx_plus_b
? ? ? ? #說明outputs是一個(gè)線性方程戈次,不需要去activation_function.
? ? ? ? #使用activation_funtion將一個(gè)線性的函數(shù)變換成一個(gè)非線性的函數(shù)
? ? else:
? ? outputs=activation_function(Wx_plus_b)
? ? return outputs
構(gòu)建簡單的神經(jīng)網(wǎng)絡(luò)
import tensorflow as tf
#創(chuàng)建一個(gè)神經(jīng)層
import numpy as np
def add_layer(inputs,in_size,out_size,activation_function=None):
? ? #這里激勵(lì)函數(shù)默認(rèn)為0富岳,則可認(rèn)為激勵(lì)函數(shù)為線性
? ? Weights=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)+biases
? ? #還未被激活的值被賦予在Wx_plus_b中匾竿,下一步是去激活他
? ? if activation_function is None:
? ? ? ? outputs=Wx_plus_b
? ? ? ? #說明outputs是一個(gè)線性方程别威,不需要去activation_function.
? ? ? ? #使用activation_funtion將一個(gè)線性的函數(shù)變換成一個(gè)非線性的函數(shù)
? ? else:
? ? outputs=activation_function(Wx_plus_b)
? ? return outputs
#制造數(shù)據(jù)
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
xs=tf.placeholder(tf.float32,[None,1])# 1是指的數(shù)據(jù)的尺寸测萎,None指的batch size的大小星澳,可以是任何數(shù)。
ys=tf.placeholder(tf.float32,[None,1])
# 該模型由三層神經(jīng)網(wǎng)絡(luò)組成 輸入層 隱藏層 輸出層? l1是輸入層? predication是輸出層
l1=add_layer(xs,1,10,activation_function=tf.nn.relu)
predication=add_layer(l1,10,1,activation_function=None)
loss=tf.reduce_mean(reduce_sum(tf.square(ys-predication),reducition_indices=[1]))
train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)
init=tf.initialize_all_variables()
with tf.Session() as sess:
? ? sess.run(init)
for i in range(1000):
? ? sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
? ? if i%50:
? ? ? ? print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))