git: https://github.com/linyi0604/MachineLearning/tree/master/07_tensorflow/

  1. import tensorflow as tf
  2. # 利用numpy生成数据模拟数据集
  3. from numpy.random import RandomState
  4.  
  5. # 定义一个训练数据batch的大小
  6. batch_size = 8
  7.  
  8. # 定义神经网络的参数
  9. w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
  10. w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))
  11.  
  12. # 行数指定为None 会根据传入的行数动态变化
  13. x = tf.placeholder(tf.float32, shape=(None, 2), name="x_input")
  14. y_ = tf.placeholder(tf.float32, shape=(None, 1), name="y_input")
  15.  
  16. # 定义神经网络前向传播
  17. a = tf.matmul(x, w1)
  18. y = tf.matmul(a, w2)
  19.  
  20. # 定义损失函数和反向传播的算法
  21. cross_entropy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0)))
  22. train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entropy)
  23.  
  24. # 利用随机数生成数据集
  25. rdm = RandomState(1)
  26. dataset_size = 128
  27. X = rdm.rand(dataset_size, 2)
  28. Y = [[int(x1+x2 < 1)] for (x1, x2) in X]
  29.  
  30. # 开启会话
  31. with tf.Session() as sess:
  32. init_op = tf.initialize_all_variables()
  33. # 初始化变量
  34. sess.run(init_op)
  35. print("训练之前的权重w1和2:")
  36. print(sess.run(w1))
  37. print(sess.run(w2))
  38.  
  39. # 设定迭代次数
  40. STEPS = 5000
  41. for i in range(STEPS):
  42. # 每次选batch个样本进行训练
  43. start = (i * batch_size) % dataset_size
  44. end = min(start + batch_size, dataset_size)
  45. # 选取样本训练神经网络
  46. sess.run(train_step, feed_dict={x: X[start: end], y_: Y[start: end]})
  47. # 每隔一段时间计算所有数据上的交叉熵并输出
  48. if i % 1000 == 0:
  49. total_cross_entropy = sess.run(cross_entropy, feed_dict={x: X, y_: Y})
  50. print("第%d次迭代:交叉熵为%s" % (i, total_cross_entropy))
  51. print("训练之后的权重w1和w2分别是:")
  52. print(sess.run(w1))
  53. print(sess.run(w2))
  54.  
  55. '''
  56. 练之前的权重w1和2:
  57. [[-0.8113182 1.4845988 0.06532937]
  58. [-2.4427042 0.0992484 0.5912243 ]]
  59. [[-0.8113182 ]
  60. [ 1.4845988 ]
  61. [ 0.06532937]]
  62.  
  63. 第0次迭代:交叉熵为0.067492485
  64. 第1000次迭代:交叉熵为0.016338505
  65. 第2000次迭代:交叉熵为0.009075474
  66. 第3000次迭代:交叉熵为0.007144361
  67. 第4000次迭代:交叉熵为0.005784708
  68.  
  69. 训练之后的权重w1和w2分别是:
  70. [[-1.9618274 2.582354 1.6820377]
  71. [-3.4681718 1.0698233 2.11789 ]]
  72. [[-1.8247149]
  73. [ 2.6854665]
  74. [ 1.418195 ]]
  75. '''

机器学习之路: tensorflow 一个最简单的神经网络的更多相关文章

  1. 用tensorflow实现最简单的神经网络

    import tensorflow as tfimport numpy as np def add_layer(inputs,in_size,out_size,activation_function= ...

  2. 练习推导一个最简单的BP神经网络训练过程【个人作业/数学推导】

    写在前面   各式资料中关于BP神经网络的讲解已经足够全面详尽,故不在此过多赘述.本文重点在于由一个"最简单"的神经网络练习推导其训练过程,和大家一起在练习中一起更好理解神经网络训 ...

  3. tensorflow笔记(二)之构造一个简单的神经网络

    tensorflow笔记(二)之构造一个简单的神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7425200.html ...

  4. 深度学习(五)基于tensorflow实现简单卷积神经网络Lenet5

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8954892.html 参考博客:https://blog.csdn.net/u01287127 ...

  5. tensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试

    刚开始学习tf时,我们从简单的地方开始.卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第一个例子,就从神经网络开始. 神经网络没有卷积功能,只有简单的三层:输入层,隐藏层和输 ...

  6. 【最简单IOC容器实现】实现一个最简单的IOC容器

    前面DebugLZQ的两篇博文: 浅谈IOC--说清楚IOC是什么 IoC Container Benchmark - Performance comparison 在浅谈IOC--说清楚IOC是什么 ...

  7. go server框架学习之路 - 写一个自己的go框架

    go server框架学习之路 - 写一个自己的go框架 用简单的代码实现一个go框架 代码地址: https://github.com/cw731/gcw 1 创建一个简单的框架 代码 packag ...

  8. Python实现一个简单三层神经网络的搭建并测试

    python实现一个简单三层神经网络的搭建(有代码) 废话不多说了,直接步入正题,一个完整的神经网络一般由三层构成:输入层,隐藏层(可以有多层)和输出层.本文所构建的神经网络隐藏层只有一层.一个神经网 ...

  9. [.NET] 打造一个很简单的文档转换器 - 使用组件 Spire.Office

    打造一个很简单的文档转换器 - 使用组件 Spire.Office [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6024827.html 序 之前,& ...

随机推荐

  1. Css之备忘录~

    1.background-size:contain/cover 两者的作用都是一样,一般用于设置小图标作为背景图,两者的区别是: Contain:不会失真     cover:会失真 2.a标签里面如 ...

  2. 使用nginx sticky实现基于cookie的负载均衡【转】

    在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接.使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端 ...

  3. 手动实现图片预览-放大缩小全屏支持IE9以上

    #{extends '/Index/index.html' /} #{set title:'意见反馈' /} <script src="/public/mgr/javascripts/ ...

  4. 如何提高PHP执行效率

    用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说 ...

  5. python面向对象(三)之继承

    继承 介绍 继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力.继承即常说的is-a关系.子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承 ...

  6. 小程序开发总结一:mpvue框架及与小程序原生的混搭开发

    mpvue-native:小程序原生和mpvue代码共存 问题描述 mpvue和wepy等框架是在小程序出来一段时间之后才开始有的,所以会出现的问题有:需要兼容已有的老项目,有些场景对小程序的兼容要求 ...

  7. mac idea内存溢出

    VM options: -mx2048m -XX:MaxPermSize=2048m -Drebel.spring_plugin=true -Drebel.hibernate_plugin=true

  8. 修饰符(动态String数组篇)--- 常用 解除疑问。

    1.无修饰符----是直接传基本类型的地址过来,并没有把基本类型的指针复制一份入栈,所以一旦修改就是修改原来的值. 2.const 修饰符 与 无修饰符一致. 3.var修饰符 与 上一致. 4.ou ...

  9. Codeforce 295B Greg and Graph(Floyd的深入理解)

    题目链接:http://codeforces.com/problemset/problem/295/B 题目大意:给出n个点的完全有权有向图,每次删去一个点,求删掉该点之前整张图各个点的最短路之和(包 ...

  10. 怎么使用T-sql生成两位字母

    SQL code select char(cast(rand()*25 as int)+97)+char(cast(rand()*25             as int)+97) select 两 ...