Fork me on GitHub

Neural Network普通神经网络

Neural Networks神经网络

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#author:victor
#Nenural Networks神经网络
'''
input layer->hidden layer1->hidden layer2->hidden layer3...->output layer
#输入层->隐藏层->输出层
#激活函数Activation Function(激励函数)
#神经网络的基本原理:梯度下降Gradient Descent in Neural Nets
#Optimization优化器
1、Newton's method牛顿法
2、Least Squares method最小二乘法
3、Gradient Descent梯度下降法(也就是求导,求微分)神经网络就是梯度下降里的分支
Cost=(predicted-real)^2=(Wx-y)^2=(W-0)^2(误差曲线)
局部最优解,全局最优解
'''
#import module
import tensorflow as tf
import numpy as np

#create data
x_data=np.random.rand(100).astype(np.float32)#tensorflow大部分数据是float32
y_data=x_data*0.1+0.3

#create tensorflow structure start#
Weights=tf.Variable(tf.random_uniform([1],-1.0,1.0))#random_uniform():随机均匀分布
#define the biases
biases=tf.Variable(tf.zeros([1]))

y=Weights*x_data+biases#预测的y

loss=tf.reduce_mean(tf.square(y-y_data))#计算预测的y与真实的y的差值,也就是损失函数
optimizer=tf.train.GradientDescentOptimizer(0.5)#learning rate学习效率一般是小于1的数
train=optimizer.minimize(loss)

init=tf.initialize_all_variables()#初始化全局变量
#create tensorflow structure end#

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

for step in range(201):#0到200,也就是201步
sess.run(train)
if step%20==0:
print(step,sess.run(Weights),sess.run(biases))

运行结果

Neural Network

总结:使用普通神经网络,计算误差用的最小二乘法,也即是真实值-预测值的平方