tensorflow入门(简单神经网络实现)
来源:互联网 发布:tensorflow最新版本 编辑:程序博客网 时间:2024/06/08 10:34
tensorflow 详细的介绍可以看极客学院的tensorflow的官网:
http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/introduction.html
官网上讲解的比较清楚。。。
这里采用一个简单的神经网络的实现,来对tensorflow基本语法进行介绍,同时也想让大家对用tensorflow实现神经网络有个基本的了解。
神经网络模式:
输入层:2个节点,输入两个数据
隐藏层:一层,3个节点
输出层:1个节点
注意:这里的节点均包括了0节点。
python代码实现:(代码中有详细注释,语法的使用从实例中观察)
# coding:utf-8import tensorflow as tffrom numpy.random import RandomState#BATCH_SIZE这是定义的一个数量,即一次训练模型,投入的样例数,按理说应该是一次投入所有训练数据的#但是实际操作中一次投入太多数据,会导致电脑死机,因此只好对投入样例数,进行限制BATCH_SIZE=8#生成模拟数据#randomState 函数中数字1,相当于一个seed种子,每次产生的随机数都是相同的rdm=RandomState(1)#产生一个128行×2列的随机矩阵X=rdm.rand(128,2)#产生一个布尔型结果矩阵128×1Y=[[int(x0+x1)<1] for(x0,x1)in X]#定义神经网络的常量,参数,输入节点,输出节点,以及前向传播过程#Variable定义一个变量,需要调用初始化,才能产生值#random_normal 产生一个正太随机矩阵,shape=[2,3],stddev是正太分布的标准差,seed随机数种子,设置后每次产生的数字都相同w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))#placeholder占位符,执行时,在通过feed_dict将值传入,dtype:数据类型,shape:数据形状,name:名称#如果在定义占位符时,不能确定值的形状时,用None表示x=tf.placeholder(tf.float32,shape=(None,2),name="x-input")y_=tf.placeholder(tf.float32,shape=(None,1),name="y-input")#前向传播的过程#matmul就是矩阵相乘a=tf.matmul(x,w1)y=tf.matmul(a,w2)#定义损失函数及反向传播算法#cross_entropy是交叉熵#tf.clip_by_value(A, min, max):输入一个张量A,把A中的每一个元素的值都压缩在min和max之间。小于min的让它等于min,大于max的元素的值等于maxcross_entropy=-tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-10,1.0)))#train_step 就是每次可训练出一组w就是一次反向传播#下面给出里三种反向传播的算法传入的是学习率train_step=tf.train.AdamOptimizer(0.001).minimize(cross_entropy)#train_step=tf.train.GradientDescentOptimizer(0.001).minimize(cross_entropy)#train_step=tf.train.MomentumOptimizer(0.001,0.9).minimize(cross_entropy)#创建一个会话来运行Tensorflow程序,反复运行反向传播#tf中运行必须放在session对象中,且运行过后,要关闭sessionwith tf.Session()as sess: #初始化变量,也就是上面的Variable变量 init_op=tf.initialize_all_variables() sess.run(init_op) # 输出目前(未经训练)的参数取值 #这里为何还要使用sess.run(w1)来进行操作? #因为此时w1还是个变量,是个对象,直接打印出来是对象的地址 print "w1:\n",sess.run(w1) print "w2:\n",sess.run(w2) print "\n" #训练模型 #训练步数 STEPS=5000 for i in range(STEPS): start=(i*BATCH_SIZE)%128 end=(i*BATCH_SIZE)%128+BATCH_SIZE sess.run(train_step,feed_dict={x: X[start:end], y_: Y[start:end]}) if i%1000==0: total_cross_entropy=sess.run(cross_entropy,feed_dict={x:X,y_:Y}) print ("After %d training steps,cross entropy on all data is %g" % (i,total_cross_entropy)) #输出训练后的参数模型 print "\n" print "w1:\n",sess.run(w1) print "w2:\n",sess.run(w2)
输出的结果:
w1:[[-0.81131822 1.48459876 0.06532937] [-2.44270396 0.0992484 0.59122431]]w2:[[-0.81131822] [ 1.48459876] [ 0.06532937]]After 0 training steps,cross entropy on all data is 0.0674925After 1000 training steps,cross entropy on all data is 0.0163385After 2000 training steps,cross entropy on all data is 0.00907547After 3000 training steps,cross entropy on all data is 0.00714436After 4000 training steps,cross entropy on all data is 0.00578471w1:[[-1.9618274 2.58235407 1.68203783] [-3.4681716 1.06982327 2.11788988]]w2:[[-1.8247149 ] [ 2.68546653] [ 1.41819501]]
阅读全文
0 0
- tensorflow入门(简单神经网络实现)
- Tensorflow入门-实现神经网络
- Tensorflow入门-实现神经网络
- Tensorflow入门-实现神经网络
- TensorFlow实现卷积神经网络(简单)
- TensorFlow入门之简单实现神经网络的结构
- TensorFlow实现神经网络入门篇
- tensorflow入门之训练简单的神经网络
- 深层神经网络实现--step by step 入门TensorFlow(二)
- TensorFlow入门(3)-单层神经网络实现方法
- Tensorflow学习:简单实现卷积神经网络(CNN)
- tensorflow入门之实现单隐层的神经网络
- tensorflow实现简单的卷积神经网络
- 简单卷积神经网络的tensorflow实现
- Tensorflow实例:实现简单的卷积神经网络
- (三)TensorFlow实现神经网络
- tensorflow 神经网络入门例子
- Tensorflow入门-简单神经网络进行MNIST数据集识别
- LTE帧结构简介
- Spring 声明式事务管理----基于注解方式
- 正则表达式
- 2016ACM/ICPC亚洲区沈阳站 C Recursive sequence (矩阵快速幂)
- js事件
- tensorflow入门(简单神经网络实现)
- 程序启动时自动选择独显
- java学习笔记(1)-基础知识记录
- 深度学习在推断阶段的硬件实现方法概述
- Python 多进程默认不能共享全局变量
- 数据结构与算法-排序:选择排序
- 摄像头测距原理与代码实现
- Android 360开源全面插件化框架RePlugin 实战
- Hibernate单表操作