学会用tensorflow搭建简单的神经网络 1

tensorflow最核心的内容就是搭建神经网络,在建立好的神经网络中加入需要做的数据,让数据自己在网络中运行。

1:总的代码  

#!/usr/bin/env python
# _*_ coding: utf-8 _*_
import tensorflow as tf
import numpy as np
#create data
x_data=np.random.rand(100).astype(np.float32)
y_data=x_data*0.1+0.3
#create tensorflow structure
weights=tf.Variable(tf.random_uniform([1],-1.0,1.0))
biases=tf.Variable(tf.zeros([1]))
y=weights*x_data+biases
#Defines the loss
loss=tf.reduce_mean(tf.square(y-y_data))
#Select the optimizer to minimize the loss
optimizer=tf.train.GradientDescentOptimizer(0.5)
train=optimizer.minimize(loss)
# Important step---Initializes all variables
init=tf.initialize_all_variables()
# Sess.run ---it will start the operation
sess=tf.Session()
sess.run(init)
#Iterations of 201 times
for step in range(501):
    sess.run(train)
    if step %20==0:
        print(step,sess.run(weights),sess.run(biases))

 2、步骤讲解

导入或者随机定义训练的数据 x 和 y:

x_data=np.random.rand(100).astype(np.float32)    #随机生成100个数据,因为tensorflow中实行的是32位浮点数,所以定义数据类型为32位的浮点数
y_data=x_data*0.1+0.3       #输入y的公式,训练后的weights接近0.1,biases接近0.3

定义出参数 Weights,biases,拟合公式 y:

weights=tf.Variable(tf.random_uniform([1],-1.0,1.0))          # 开始的weights为随机设置的值;[1]表示为1维数组;-1.0,1.0--表示范围为-1到1之间

biases=tf.Variable(tf.zeros([1]))                                      #定义的biases初始值为0 y=weights*x_data+biases #定义公式,和输入的公式一致

误差公式loss

loss=tf.reduce_mean(tf.square(y-y_data))           #开始的时候误差很大

选择 Gradient Descent 这个最基本的 Optimizer:

optimizer=tf.train.GradientDescentOptimizer(0.5)   #神经网络最主要的工作就是:建立优化器,减少误差,这里选择了梯度下降的算法,学习率是0.5
train=optimizer.minimize(loss)                #使loss达到最小

前面是定义,在运行模型前先要初始化所有变量:

init=tf.initialize_all_variables()      #让所有的变量活动起来

接下来把结构激活,sesseion像一个指针指向要处理的地方:

  sess=tf.Session()     

  sess.run(init)   #激活init


开始训练,训练200步,每20步打印weights和biases

for step in range(501):
    sess.run(train)
    if step %20==0:
        print(step,sess.run(weights),sess.run(biases))
3 Python运行结果

 

 

 

 

 

 

 

posted on 2017-08-08 10:19  可可洁儿  阅读(262)  评论(0)    收藏  举报

导航