1.4激活函数-带隐层的神经网络tf实战
激活函数
激活函数----日常不能用线性方程所概括的东西
左图是线性方程,右图是非线性方程
当男生增加到一定程度的时候,喜欢女生的数量不可能无限制增加,更加趋于平稳
在线性基础上套了一个激活函数,使得最后能得到输出结果
常用的三种激活函数:
取值不同时得到的结果也不同
常见激活函数图形
tensorflow中自带的激活函数举例:
添加隐层的神经网络
#添加隐层的神经网络结构
import tensorflow as tf def add_layer(inputs,in_size,out_size,activation_function=None):
#定义权重--随机生成inside和outsize的矩阵
Weights=tf.Variable(tf.random_normal([in_size,out_size]))
#不是矩阵,而是类似列表
biaes=tf.Variable(tf.zeros([1,out_size])+0.1)
Wx_plus_b=tf.matmul(inputs,Weights)+biaes
if activation_function is None:
outputs=Wx_plus_b
else:
outputs=activation_function(Wx_plus_b)
return outputs import numpy as np
x_data=np.linspace(-1,1,300)[:,np.newaxis] #300行数据
noise=np.random.normal(0,0.05,x_data.shape)
y_data=np.square(x_data)-0.5+noise
#None指定sample个数,这里不限定--输出属性为1
xs=tf.placeholder(tf.float32,[None,1]) #这里需要指定tf.float32,
ys=tf.placeholder(tf.float32,[None,1]) #建造第一层layer
#输入层(1)
l1=add_layer(xs,1,10,activation_function=tf.nn.relu)
#隐层(10)
prediction=add_layer(l1,10,1,activation_function=None)
#输出层(1)
#预测prediction
loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),
reduction_indices=[1])) #平方误差
train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss) init=tf.initialize_all_variables()
sess=tf.Session()
#直到执行run才执行上述操作
sess.run(init)
for i in range(1000):
#这里假定指定所有的x_data来指定运算结果
sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
if i%50:
print (sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
显示:
1.11593
0.26561
0.167872
0.114671
0.0835957
0.0645237
0.0524448
0.0446363
0.039476
0.0360211
0.0336599
0.0320134
0.0308378
0.0299828
0.029324
0.0287996
0.0283558
0.0279624
0.0276017
0.02726
0.0269316
0.0266103
0.026298
0.0259914
0.0256905
0.025395
0.0251055
0.0248204
0.024538
0.0242604
0.023988
0.0237211
0.0234583
0.0231979
0.0229418
0.0226901
0.0224427
0.0221994
0.0219589
0.0217222
0.0214888
0.0212535
0.0210244
0.0207988
0.0205749
0.0203548
0.0201381
增加np.newaxis
np.newaxis 为 numpy.ndarray(多维数组)增加一个轴
>> type(np.newaxis)
NoneType
>> np.newaxis == None
True
np.newaxis 在使用和功能上等价于 None,其实就是 None 的一个别名。
1. np.newaxis 的实用
>> x = np.arange(3)
>> x
array([0, 1, 2])
>> x.shape
(3,) >> x[:, np.newaxis]
array([[0],
[1],
[2]]) >> x[:, None]
array([[0],
[1],
[2]]) >> x[:, np.newaxis].shape
(3, 1)
2. 索引多维数组的某一列时返回的是一个行向量
>>> X = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
>>> X[:, 1]
array([2, 6, 10]) % 这里是一个行
>>> X[:, 1].shape % X[:, 1] 的用法完全等同于一个行,而不是一个列,
(3, )
如果我们索引多维数组的某一列时,返回的仍然是列的结构,一种正确的索引方式是:
>>>X[:, 1][:, np.newaxis]
array([[2],
[6],
[10]])
如果想实现第二列和第四列的拼接(层叠):
>>>X_sub = np.hstack([X[:, 1][:, np.newaxis], X[:, 3][:, np.newaxis]])
% hstack:horizontal stack,水平方向上的层叠
>>>X_sub
array([[2, 4]
[6, 8]
[10, 12]])
当然更为简单的方式还是使用切片:
>> X[:, [1, 3]]
array([[ 2, 4],
[ 6, 8],
[10, 12]])
1.4激活函数-带隐层的神经网络tf实战的更多相关文章
- 可变多隐层神经网络的python实现
说明:这是我对网上代码的改写版本,目的是使它跟前一篇提到的使用方法尽量一致,用起来更直观些. 此神经网络有两个特点: 1.灵活性 非常灵活,隐藏层的数目是可以设置的,隐藏层的激活函数也是可以设置的 2 ...
- 实现一个单隐层神经网络python
看过首席科学家NG的深度学习公开课很久了,一直没有时间做课后编程题,做完想把思路总结下来,仅仅记录编程主线. 一 引用工具包 import numpy as np import matplotlib. ...
- 神经网络结构设计指导原则——输入层:神经元个数=feature维度 输出层:神经元个数=分类类别数,默认只用一个隐层 如果用多个隐层,则每个隐层的神经元数目都一样
神经网络结构设计指导原则 原文 http://blog.csdn.net/ybdesire/article/details/52821185 下面这个神经网络结构设计指导原则是Andrew N ...
- 用C实现单隐层神经网络的训练和预测(手写BP算法)
实验要求:•实现10以内的非负双精度浮点数加法,例如输入4.99和5.70,能够预测输出为10.69•使用Gprof测试代码热度 代码框架•随机初始化1000对数值在0~10之间的浮点数,保存在二维数 ...
- 代码详解:TensorFlow Core带你探索深度神经网络“黑匣子”
来源商业新知网,原标题:代码详解:TensorFlow Core带你探索深度神经网络“黑匣子” 想学TensorFlow?先从低阶API开始吧~某种程度而言,它能够帮助我们更好地理解Tensorflo ...
- 吴恩达深度学习第1课第4周-任意层人工神经网络(Artificial Neural Network,即ANN)(向量化)手写推导过程(我觉得已经很详细了)
学习了吴恩达老师深度学习工程师第一门课,受益匪浅,尤其是吴老师所用的符号系统,准确且易区分. 遵循吴老师的符号系统,我对任意层神经网络模型进行了详细的推导,形成笔记. 有人说推导任意层MLP很容易,我 ...
- 吴恩达深度学习第1课第3周编程作业记录(2分类1隐层nn)
2分类1隐层nn, 作业默认设置: 1个输出单元, sigmoid激活函数. (因为二分类); 4个隐层单元, tanh激活函数. (除作为输出单元且为二分类任务外, 几乎不选用 sigmoid 做激 ...
- tensorflow-LSTM-网络输出与多隐层节点
本文从tensorflow的代码层面理解LSTM. 看本文之前,需要先看我的这两篇博客 https://www.cnblogs.com/yanshw/p/10495745.html 谈到网络结构 ht ...
- js 带遮罩层的弹出层
最近有个小伙伴问我关于mui的带遮罩层的弹出层,我给他发了个相关demo,但是因为他是新手的原因没有看懂,所以我写了一个单纯的原生的带遮罩层的弹出层dome.写这篇微博希望可以帮到需要的小伙伴. &l ...
随机推荐
- linux系统调用函数---12
Linux应用编程学习笔记 周学伟 一.系统调用文件编程 1.文件打开函数 /*************************** ...
- Java按钮控件数组实现计算器界面
编写程序,通过按钮数组来管理界面中的所有按钮控件,从而使用最少的代码实现模拟的计算器界面. 思路如下: 创建一个类,通过extends使其继承窗体类JFrame: 创建一个JFrame对象,使用JFr ...
- [转]PHP判断字符串是纯英文、纯汉字或汉英混合(GBK)
PHP判断字符串是否为中文(或英文)的方法,除了正则表达式判断和拆分字符判断字符的值是否小于128 外还有一种比较特别的方法. 使用php中的mb_strlen和strlen函数判断 方法比较简单:分 ...
- HttpClient(四)-- 使用代理IP 和 超时设置
1.代理IP的用处: 在爬取网页的时候,有的目标站点有反爬虫机制,对于频繁访问站点以及规则性访问站点的行为,会采集屏蔽IP措施.这时候,就可以使用代理IP,屏蔽一个就换一个IP. 2.代理IP分类: ...
- [转]JAVA并发编程学习笔记之Unsafe类
1.通过Unsafe类可以分配内存,可以释放内存:类中提供的3个本地方法allocateMemory.reallocateMemory.freeMemory分别用于分配内存,扩充内存和释放内存,与C语 ...
- material mem
http://blog.csdn.net/caihaijiang/article/details/5903133 http://akunamotata.iteye.com/blog/1625804 刷 ...
- Ansible 使用 Playbook 安装 Nginx
思路:先在一台机器上编译安装好 Nginx,打包,然后通过 Ansible 下发 [root@localhost ~]$ cd /etc/ansible/ [root@localhost ansibl ...
- transformClassesWithJarMergingForDebug
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.> com.android.build ...
- Python内置性能分析模块timeit
timeit模块 timeit模块可以用来测试一小段Python代码的执行速度. class timeit.Timer(stmt='pass', setup='pass', timer=<tim ...
- [转]redis的三种启动方式
来源:https://www.cnblogs.com/pqchao/p/6549510.html redis的启动方式1.直接启动 进入redis根目录,执行命令: #加上‘&’号使red ...