tensorflow Def 添加层和在此基础上构建一个简单的神
import tensorflow as tf
#创建一个神经层
def add_layer(inputs,in_size,out_size,activation_function=None):
#这里激励函数默认为0,则可认为激励函数为线性
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是一个线性方程,不需要去activation_function.
#使用activation_funtion将一个线性的函数变换成一个非线性的函数
else:
outputs=activation_function(Wx_plus_b)
return outputs
构建简单的神经网络
import tensorflow as tf
#创建一个神经层
import numpy as np
def add_layer(inputs,in_size,out_size,activation_function=None):
#这里激励函数默认为0,则可认为激励函数为线性
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是一个线性方程,不需要去activation_function.
#使用activation_funtion将一个线性的函数变换成一个非线性的函数
else:
outputs=activation_function(Wx_plus_b)
return outputs
#制造数据
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是指的数据的尺寸,None指的batch size的大小,可以是任何数。
ys=tf.placeholder(tf.float32,[None,1])
# 该模型由三层神经网络组成 输入层 隐藏层 输出层 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}))