开始学习tensorflow
搭建神经网络:
- 准备数据
- 定义数据输入层
- 定义网络隐藏层和预测层
- 定义loss 表达式
- 选择optimizer使得loss 最小
import tensorflow as tf
import numpy as np # 定义一个添加层的函数为网络构建做准备
# 默认情况下没有激活函数,input 是神经元输入, in_size 输入神经元的个数,out_size输出的个数。
def add_layer(inputs, in_size,out_size,activation_function=None):
weights=tf.Variable(tf.random_normal([in_size,out_size]))
# 定义权重是变量,在tensorflow中定义是一个变量才是变量
biase=tf.Variable(tf.zeros([1,out_size])+0.1)
# 矩阵乘法
w_plus_b=tf.matmul(inputs,weights)+biase
# 定义运算
if activation_function is None:
outputs=w_plus_b
else:
outputs=activation_function(w_plus_b)
return outputs #1. 准备训练数据
x_data=np.linspace(-1,1,300)[:,np.newaxis]
# linspace 类似matlab 中的[-1:1:300],生成一个数组从-1 到300 每次加1,
# np.newaxis 等价于None,np.linspace 生成的是一个行向量,使用newaxis 增加一个维度大小为1 的新维度。x=[1,2,3],x.shape=3.,x[:,newaxis].shape=(3,1)在3后加一维
noise=np.random.normal(0,0.05,x_data.shape)
# 获得一个正态分布的值,和x_data大小相同, mu=0,v=0.05
y_data=np.square(x_data)-0.5+noise #2. 定义节点接受数据
# 要给节点输入数据时,要用placeholder 占位符,类似于函数的参数描述待输入的节点,在运行时传入,和feed_dict是绑定使用的。
xs=tf.placeholder(tf.float32,[None,1])
ys=tf.placeholder(tf.float32,[None,1]) #3.定义网络结构
l1=add_layer(xs,1,10,activation_function=tf.nn.relu)
prediction=add_layer(l1,10,1,activation_function=None) #4.定义loss
# reduce_sum 是求和,求和的对象时tensor,沿着tensor的某些维度求和。 本质是降维,reduce_sum 以求和的手段降维, reduce_mean 以求平均手段降维。 这种操作都有reduce_indices, 默认值为None,将tensor 降到0维 loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1])) #5.选择optimizer
# 使用梯度下降的方法,学习率为0.1,最小化loss
train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss) #
# 初始化参数, 如果有变量一定要给变量初始化
init=tf.initialize_all_variables()
# 定义一个Session对象, 在session 中执行
sess=tf.Session()
sess.run(init) # 迭代1000次,在sess中run optimizer
for i in range(1000):
# train_step 中loss 是由 placeholder 定义的运算,要用feed 传入参数
sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
if i%50==0:
print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
reduce_sum:
在tensorflow 1.0 中,reduction_indices 改为axis,
dropout 是训练过程中,按照一定概率将一部分神经单元暂时从网络中丢弃。
在tensorflow 中实现就是在add layer 函数中加上dropout,keep_prob保存多少不被drop
Wx_plus_b = tf.nn.dropout(Wx_plus_b, keep_prob)
使用tensorboard: 要用with tf.name_scope 定义各个框架,
开始学习tensorflow的更多相关文章
- 学习TensorFlow,打印输出tensor的值
在学习TensorFlow的过程中,我们需要知道某个tensor的值是什么,这个很重要,尤其是在debug的时候.也许你会说,这个很容易啊,直接print就可以了.其实不然,print只能打印输出sh ...
- 学习TensorFlow,浅析MNIST的python代码
在github上,tensorflow的star是22798,caffe是10006,torch是4500,theano是3661.作为小码农的我,最近一直在学习tensorflow,主要使用pyth ...
- 学习TensorFlow,线性回归模型
学习TensorFlow,在MNIST数据集上建立softmax回归模型并测试 一.代码 <span style="font-size:18px;">from tens ...
- 学习Tensorflow的LSTM的RNN例子
学习Tensorflow的LSTM的RNN例子 基于TensorFlow一次简单的RNN实现 极客学院-递归神经网络 如何使用TensorFlow构建.训练和改进循环神经网络
- gcp上使用gpu来学习tensorflow
1080ti显卡实在是太贵了,8k一张的价格,让我感到无耐.还好,有gcp的gpu来训练,最有意思的是,他还提供300美元,让你挥霍. 1.当然是申请gcp的账号. 2.登录后,左侧->&quo ...
- 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识
深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...
- 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别
深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...
- 深度学习Tensorflow相关书籍推荐和PDF下载
深度学习Tensorflow相关书籍推荐和PDF下载 baihualinxin关注 32018.03.28 10:46:16字数 481阅读 22,673 1.机器学习入门经典<统计学习方法&g ...
- 学习TensorFlow,调用预训练好的网络(Alex, VGG, ResNet etc)
视觉问题引入深度神经网络后,针对端对端的训练和预测网络,可以看是特征的表达和任务的决策问题(分类,回归等).当我们自己的训练数据量过小时,往往借助牛人已经预训练好的网络进行特征的提取,然后在后面加上自 ...
- 学习TensorFlow,TensorBoard可视化网络结构和参数
在学习深度网络框架的过程中,我们发现一个问题,就是如何输出各层网络参数,用于更好地理解,调试和优化网络?针对这个问题,TensorFlow开发了一个特别有用的可视化工具包:TensorBoard,既可 ...
随机推荐
- Delphi下EasyGrid使用体会
最近在编写软件的时候,非常需要一款支持多表头的StringGrid控件,朋友介绍使用EasyGrid控件,这款控件大概从04年开始就没有再更新,网上有关与它的资料也较少.但是通过其demo,此软件还是 ...
- Guava的RateLimiter在单机限流中的正确用法
错误使用 在实现限流时,网上的各种文章基本都会提到Guava的RateLimiter,用于实现单机的限流,并给出类似的代码: public void method() { RateLimiter ra ...
- JavaScript 教程 之基础教程
1.js 错误 var objClass = { foo:1, bar:2 }; function printf() { var aaa:objClass; aaa.foo = 2; console. ...
- BZOJ3425[POI2013]Polarization——DP+bitset+分块
题目描述 Everyone knew it would only be a matter of time. So what? Faced for years on, a peril becomes t ...
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 i题 Minimum(线段树)
描述 You are given a list of integers a0, a1, …, a2^k-1. You need to support two types of queries: 1. ...
- MT【229】最小值函数
已知定义域为$R$的函数,$f(x),g(x)$满足:$f(x)+g(x)=e^{-x^2+1}$,则$min\{f(x),g(x)\}$的最大值为______ 解答:$min\{f(x),g(x)\ ...
- 自学Linux Shell2.1-进入shell命令行
点击返回 自学Linux命令行与Shell脚本之路 2.1-进入shell命令行 进入文本命令行界面(CLI)两种方法: 控制台终端 图形化终端 1. 通过Linux控制台终端访问CLI 按下Ctrl ...
- Java NIO -- 直接缓冲区与非直接缓冲区
直接缓冲区与非直接缓冲区: 非直接缓冲区:通过 allocate() 方法分配缓冲区,将缓冲区建立在 JVM 的内存中直接缓冲区:通过 allocateDirect() 方法分配直接缓冲区,将缓冲区建 ...
- Python文件和异常
程序和运行时数据是在内存中驻留的,涉及到数据交换的地方,通常是磁盘.网络等,因此需要IO接口. IO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但是只能单 ...
- C#/.NET转Java学习笔记
大学研究了三年的.Net,由于偶然的机会,拿到IBM的Java web实习offer,所以决定转行搞Java(综合了校招情况.发展前景和其他各种因素). 下面是我在学习Java web的一些学习笔记( ...