学习进度-神经网络

代码

%matplotlib inline

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

#创建一个神经网络层
def add_layer(input,in_size,out_size,activation_function=None):
"""
:param input: 数据输入
:param in_size: 输入大小
:param out_size: 输出大小
:param activation_function: 激活函数(默认没有)
:return:output:数据输出
"""
Weight=tf.Variable(tf.random_normal([in_size,out_size]) )
biases=tf.Variable(tf.zeros([1,out_size]) +0.1 )
W_mul_x_plus_b=tf.matmul(input,Weight) + biases
#根据是否有激活函数
if activation_function == None:
output=W_mul_x_plus_b
else:
output=activation_function(W_mul_x_plus_b)
return output

#创建一个具有输入层,隐藏层,输出层的三层神经网络,神经元个数分别为1,10,1
x_data=np.linspace(-1,1,300)[:,np.newaxis] # 创建输入数据 np.newaxis分别是在列(第二维)上增加维度,原先是(300,)变为(300,1)
noise=np.random.normal(0,0.05,x_data.shape)
y_data=np.square(x_data)+1+noise # 创建输入数据对应的输出

# print(x_data.shape)
# x=np.linspace(-1,1,300)
# print(x.shape)

#定义输入数据
xs=tf.placeholder(tf.float32,[None,1])
ys=tf.placeholder(tf.float32,[None,1])

#定义一个隐藏层
hidden_layer1=add_layer(xs,1,10,activation_function=tf.nn.relu)
#定义一个输出层
prediction=add_layer(hidden_layer1,10,1,activation_function=None)

#求解神经网络参数
#1.定义损失函数
loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction) ,reduction_indices=[1] ))
#2.定义训练过程
train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)

init=tf.global_variables_initializer()
sess=tf.Session()
sess.run(init)


# 绘制求解的曲线
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.scatter(x_data, y_data)
plt.ion() #Turn interactive mode on 开启互动模式
plt.show() #Display a figure


#3.进行训练
for i in range(1000):
sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
if i%100==0:
try:
ax.lines.remove(lines[0]) #擦除之前的轨迹
except Exception:
pass

print(sess.run(loss,feed_dict={xs:x_data,ys:y_data} ) )
# 计算预测值
prediction_value = sess.run(prediction, feed_dict={xs: x_data})
#print(prediction.shape)
# 绘制预测值
lines = ax.plot(x_data, prediction_value, 'r-', lw=5)
plt.pause(0.1)
# 关闭Session
plt.pause(1000)

#关闭sess
sess.close()

结果截图

学习进度-神经网络

 

上一篇:Maven工程中pom.xml文件使用exclusion


下一篇:keras基于多层感知器的softmax多分类