机器学习之路: tensorflow 一个最简单的神经网络
git: https://github.com/linyi0604/MachineLearning/tree/master/07_tensorflow/
- import tensorflow as tf
- # 利用numpy生成数据模拟数据集
- from numpy.random import RandomState
- # 定义一个训练数据batch的大小
- batch_size = 8
- # 定义神经网络的参数
- w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
- w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))
- # 行数指定为None 会根据传入的行数动态变化
- x = tf.placeholder(tf.float32, shape=(None, 2), name="x_input")
- y_ = tf.placeholder(tf.float32, shape=(None, 1), name="y_input")
- # 定义神经网络前向传播
- a = tf.matmul(x, w1)
- y = tf.matmul(a, w2)
- # 定义损失函数和反向传播的算法
- cross_entropy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0)))
- train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entropy)
- # 利用随机数生成数据集
- rdm = RandomState(1)
- dataset_size = 128
- X = rdm.rand(dataset_size, 2)
- Y = [[int(x1+x2 < 1)] for (x1, x2) in X]
- # 开启会话
- with tf.Session() as sess:
- init_op = tf.initialize_all_variables()
- # 初始化变量
- sess.run(init_op)
- print("训练之前的权重w1和2:")
- print(sess.run(w1))
- print(sess.run(w2))
- # 设定迭代次数
- STEPS = 5000
- for i in range(STEPS):
- # 每次选batch个样本进行训练
- start = (i * batch_size) % dataset_size
- end = min(start + batch_size, dataset_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("第%d次迭代:交叉熵为%s" % (i, total_cross_entropy))
- print("训练之后的权重w1和w2分别是:")
- print(sess.run(w1))
- print(sess.run(w2))
- '''
- 练之前的权重w1和2:
- [[-0.8113182 1.4845988 0.06532937]
- [-2.4427042 0.0992484 0.5912243 ]]
- [[-0.8113182 ]
- [ 1.4845988 ]
- [ 0.06532937]]
- 第0次迭代:交叉熵为0.067492485
- 第1000次迭代:交叉熵为0.016338505
- 第2000次迭代:交叉熵为0.009075474
- 第3000次迭代:交叉熵为0.007144361
- 第4000次迭代:交叉熵为0.005784708
- 训练之后的权重w1和w2分别是:
- [[-1.9618274 2.582354 1.6820377]
- [-3.4681718 1.0698233 2.11789 ]]
- [[-1.8247149]
- [ 2.6854665]
- [ 1.418195 ]]
- '''
机器学习之路: tensorflow 一个最简单的神经网络的更多相关文章
- 用tensorflow实现最简单的神经网络
import tensorflow as tfimport numpy as np def add_layer(inputs,in_size,out_size,activation_function= ...
- 练习推导一个最简单的BP神经网络训练过程【个人作业/数学推导】
写在前面 各式资料中关于BP神经网络的讲解已经足够全面详尽,故不在此过多赘述.本文重点在于由一个"最简单"的神经网络练习推导其训练过程,和大家一起在练习中一起更好理解神经网络训 ...
- tensorflow笔记(二)之构造一个简单的神经网络
tensorflow笔记(二)之构造一个简单的神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7425200.html ...
- 深度学习(五)基于tensorflow实现简单卷积神经网络Lenet5
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8954892.html 参考博客:https://blog.csdn.net/u01287127 ...
- tensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试
刚开始学习tf时,我们从简单的地方开始.卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第一个例子,就从神经网络开始. 神经网络没有卷积功能,只有简单的三层:输入层,隐藏层和输 ...
- 【最简单IOC容器实现】实现一个最简单的IOC容器
前面DebugLZQ的两篇博文: 浅谈IOC--说清楚IOC是什么 IoC Container Benchmark - Performance comparison 在浅谈IOC--说清楚IOC是什么 ...
- go server框架学习之路 - 写一个自己的go框架
go server框架学习之路 - 写一个自己的go框架 用简单的代码实现一个go框架 代码地址: https://github.com/cw731/gcw 1 创建一个简单的框架 代码 packag ...
- Python实现一个简单三层神经网络的搭建并测试
python实现一个简单三层神经网络的搭建(有代码) 废话不多说了,直接步入正题,一个完整的神经网络一般由三层构成:输入层,隐藏层(可以有多层)和输出层.本文所构建的神经网络隐藏层只有一层.一个神经网 ...
- [.NET] 打造一个很简单的文档转换器 - 使用组件 Spire.Office
打造一个很简单的文档转换器 - 使用组件 Spire.Office [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6024827.html 序 之前,& ...
随机推荐
- windows 身份登录(vs设置)
如果您的项目是windows身份严重,前提是我们用域账户登录,不用单独做登录页功能了. 一.如果用IE访问方法: 进入:工具-Internet选项-安全-自定义级别,如下设置即可. 二.如果用Visu ...
- JS获取元素内容属性以及修改
1.通过document对象
- Redis简介——(一)
1.关于关系型数据库和nosql数据库 关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据 库是基于特殊的结构,并将数据存储到内存的数据库.从性能上而言,nosql数据库 ...
- sql 内联,左联,右联,全联
联合查询效率较高,以下例子来说明联合查询(内联.左联.右联.全联)的好处: T1表结构(用户名,密码) userid (int) username varchar(20) password varc ...
- Nginx常见错误与问题之解决方法技术指南
Nginx常见错误与问题之解决方法技术指南. 安装环境: 系统环境:redhat enterprise 6.5 64bit 1.Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的 ...
- STM8CubeMx来了
几年前出来的STM32CubeMx是众多stm32开发者的福音,大大缩短了开发者的开发周期.就在前几天,st官网宣布针对stm8的图形配置工具stm8cube横空出世. 如果你还不知道STM32Cub ...
- 玩玩 Nginx 1----- Nginx + ngx_lua安装测试【CentOs下】
最近打算搞搞nginx,扒着各位先驱的文章自己进行测试下,中间过程也是错误不断,记录一下,以备使用. nginx的安装挺简单的,主要还是研究下一些第三方的模块,首先想试下初始化 ...
- 【轨迹动画css】不规则轨迹动画css教程,弹球,客服广告悬浮层都可以用
小demo如下,可更具自己需求修改: css @keyframes animX{ 0% {left: 0px;} 100% {left: 500px;} } @keyframes animY{ 0% ...
- KVM和远程管理工具virt-manager
kvm在server端的部署(针对rhel6系统,可以构建本地更新源) 注意:如果只是安装管理工具,可以试试直接执行8步骤 1.对服务器实行kvm虚拟化首先需要确认服务器的物理硬件是否支持 cat / ...
- Codeforces 552C Vanya and Scales(进制转换+思维)
题目链接:http://codeforces.com/problemset/problem/552/C 题目大意:有101个砝码重量为w^0,w^1,....,w^100和一个重量为m的物体,问能否在 ...