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

本文通过一个简单的线性回归示例介绍了TensorFlow的基本用法,包括数据准备、模型搭建、损失函数定义、优化器选择及训练过程。通过200次迭代训练,最终使得模型的权重和偏置逼近真实值。

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运行结果

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/kekejieer/p/7291061.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值