激活函数

激活函数----日常不能用线性方程所概括的东西

左图是线性方程,右图是非线性方程

当男生增加到一定程度的时候,喜欢女生的数量不可能无限制增加,更加趋于平稳

在线性基础上套了一个激活函数,使得最后能得到输出结果

常用的三种激活函数:

取值不同时得到的结果也不同

常见激活函数图形

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实战的更多相关文章

  1. 可变多隐层神经网络的python实现

    说明:这是我对网上代码的改写版本,目的是使它跟前一篇提到的使用方法尽量一致,用起来更直观些. 此神经网络有两个特点: 1.灵活性 非常灵活,隐藏层的数目是可以设置的,隐藏层的激活函数也是可以设置的 2 ...

  2. 实现一个单隐层神经网络python

    看过首席科学家NG的深度学习公开课很久了,一直没有时间做课后编程题,做完想把思路总结下来,仅仅记录编程主线. 一 引用工具包 import numpy as np import matplotlib. ...

  3. 神经网络结构设计指导原则——输入层:神经元个数=feature维度 输出层:神经元个数=分类类别数,默认只用一个隐层 如果用多个隐层,则每个隐层的神经元数目都一样

    神经网络结构设计指导原则 原文   http://blog.csdn.net/ybdesire/article/details/52821185   下面这个神经网络结构设计指导原则是Andrew N ...

  4. 用C实现单隐层神经网络的训练和预测(手写BP算法)

    实验要求:•实现10以内的非负双精度浮点数加法,例如输入4.99和5.70,能够预测输出为10.69•使用Gprof测试代码热度 代码框架•随机初始化1000对数值在0~10之间的浮点数,保存在二维数 ...

  5. 代码详解:TensorFlow Core带你探索深度神经网络“黑匣子”

    来源商业新知网,原标题:代码详解:TensorFlow Core带你探索深度神经网络“黑匣子” 想学TensorFlow?先从低阶API开始吧~某种程度而言,它能够帮助我们更好地理解Tensorflo ...

  6. 吴恩达深度学习第1课第4周-任意层人工神经网络(Artificial Neural Network,即ANN)(向量化)手写推导过程(我觉得已经很详细了)

    学习了吴恩达老师深度学习工程师第一门课,受益匪浅,尤其是吴老师所用的符号系统,准确且易区分. 遵循吴老师的符号系统,我对任意层神经网络模型进行了详细的推导,形成笔记. 有人说推导任意层MLP很容易,我 ...

  7. 吴恩达深度学习第1课第3周编程作业记录(2分类1隐层nn)

    2分类1隐层nn, 作业默认设置: 1个输出单元, sigmoid激活函数. (因为二分类); 4个隐层单元, tanh激活函数. (除作为输出单元且为二分类任务外, 几乎不选用 sigmoid 做激 ...

  8. tensorflow-LSTM-网络输出与多隐层节点

    本文从tensorflow的代码层面理解LSTM. 看本文之前,需要先看我的这两篇博客 https://www.cnblogs.com/yanshw/p/10495745.html 谈到网络结构 ht ...

  9. js 带遮罩层的弹出层

    最近有个小伙伴问我关于mui的带遮罩层的弹出层,我给他发了个相关demo,但是因为他是新手的原因没有看懂,所以我写了一个单纯的原生的带遮罩层的弹出层dome.写这篇微博希望可以帮到需要的小伙伴. &l ...

随机推荐

  1. 个人Android开发习惯[转载]

    以下内容转载自牛人博客,很多牛叉内容,请点击:http://www.stay4it.com/?p=281 Android三年,现在写代码,真心没什么很大的兴趣,每天都是优化代码,优化框架,技术支持.非 ...

  2. Java重定向输出流实现程序日志

    创建一个类,在该类的main主方法中,保存System类的out成员变量为临时变量,然后创建一个新的文件输出流,并把这个输出流设置为System类新的输出流.在程序关键位置输出调试信息,这些调试信息将 ...

  3. VB2008新特性

    1.扩展方法 (Extension Methods) 给Person类扩展Print方法 Public Module PersonExtension <System.Runtime.Compil ...

  4. Linux+Redis实战教程_day01_Linux系统上安装tomcat

    Linux系统上安装tomcat 安装tomcat 上传tomcat的安装文件 Alt+p 拖拽上传 创建tomcat的安装路径 mkdir -p /usr/local/tomcat 解压tomcat ...

  5. Dubbo -- 系统学习 笔记 -- 示例 -- 集群容错

    Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 集群容错 在集群调用失败时,Dubbo提供了多种容错方案,缺省为failover重 ...

  6. spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

    spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void.下面将对具体的一一进行说明: ModelAn ...

  7. WAF Bypass FUZZ小脚本

    分享两个小脚本,用来WAF Bypass简单FUZZ的 第一个:先生成一个字典,带入搭建的环境进行FUZZ,针对某些软WAF挺好用的,可FUZZ出不少姿势出来,记得先把CC攻击加入白名单才行哦... ...

  8. U3D教程宝典之两步实现超实用的XML存档

    两步实现超实用的XML存档 本套存档的优点:易使用,跨平台,防作弊(内容加密 + 防拷贝) 脚本下载地址 使用方法非常简单:把GameDataManager和XmlSaver两个脚本添加至工程后(1) ...

  9. 《C++标准程序库》笔记之四

    本篇博客笔记顺序大体按照<C++标准程序库(第1版)>各章节顺序编排. ---------------------------------------------------------- ...

  10. C#实现新建文件并写入内容

    using System; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(stri ...