Tensorflow-卷积神经网络
神经网络具体过程就是:神经信号x乘上权重向量w,经过输入函数(Net input function)求和后,由激活函数(Activation function)输出。监督学习过程中,输出结果将会对比数据集样本结果(label),使用损失函数(cost function)计算损失,并且经过优化器迭代后更新权重。
输入层该层只起到输入信号的扇出作用.所以在计算网络的层数时不被记入。该层负责接收来自网络外部的信息。
输出层它是网络的最后一层,具有该网络的最大层号,负责输出网络的计算结果。
隐藏层除输入层和输出层以外的其他各层叫做隐藏层。隐藏层不直接接受外界的信号,也不直接向外界发送信号。
计算过程
卷积神经网络卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。
卷积神经网络分为了三部分,第一部分为输入层,第二部分由若干个卷积层和池化层 组成,第三部分为一个全连接的多层感知分类器构成。
卷积层卷积层通常包含若干个特征平面(featureMap),每一个特征平面由一些矩形排列的神经元组成,同一特征平面的神经元共享权值,这个共享权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络 ...
TensorFlow-损失函数
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$']],
displayMath: [ ['$$','$$']]
}
});
损失函数定义损失函数(loss function),量化了分类器输出地结果(预测值)和我们期望的结果(标签)之间的差距。在机器学习中,损失函数(loss function)也称cost function(代价函数),是用来计算预测值和真实值的差距。然后以loss function的最小值作为目标函数进行反向传播迭代计算模型中的参数,这个让loss function的值不断变小的过程称为优化。
损失函数分为经验风险损失函数和结构风险损失函数
经验风险损失函数指预测结果和实际结果的差别
结构风险损失函数是指经验风险损失函数加上正则项
设总有N个样本的样本集为$(X,Y)=(x_i,y_i)$,那么总的损失函数为$$L = \sum_{i=1}^n l(y_i,f(x_i)) $$其中 $y_i,i∈[1,N]$为样 ...
TensorFlow-激活函数
激活函数激活函数(Activation Function)运行时激活神经网络中某一部分神经元,将激活信息向后传入下一层的神经网络。激活函数不会改变数据的维度,也就是输入和输出的维度是相同的。
why (为什么要用激活函数)因为线性模型的表达能力不够,引入激活函数是为了添加非线性因素,解决线性模型所不能解决的问题
参见:https://www.zhihu.com/question/22334626/answer/21036590
what (激活函数是什么)激活函数就是一个普通函数。通过函数把特征保留并映射出来,这是神经网络能解决非线性问题关键。特性:
非线性:当激活函数是线性的时候,一个两层的神经网络就可以逼近基本上所有的函数了。如果使用的是恒等激活函数,那么其实整个网络跟单层神经网络是等价的。
可微性:当优化方法是基于梯度的时候,这个性质是必须的。
单调性:当激活函数是单调的时候,单层网络能够保证是凸函数。
f(x)≈x:当激活函数满足这个性质的时候,如果参数的初始化是random的很小的值,那么神经网络的训练将会很高效;如果不满足这个性质,那么就需要很用心的去设置初始值 ...
TensorFlow 基本概念与函数-1
编程模型
TensorFlow的数据流图是由节点(Node) 和边(edge)组成的有向无环图(directed acycline graph,DAG)。TensorFlow 由 Tensor 和 Flow 两部 分组成,Tensor(张量)代表了数据流图中的边,而 Flow(流动)这个动作就代表了数据流图中节点所做的操作。
计算过程:首先从输入层开始,经过塑形层后,一层一层进行前向传播运算。Relu层(隐藏层)里两个参数,即Wh1和bh1,在输出前使用Rule(Rectified Linear Units)激活函数做非线性处理。然后进入Logit层(输出层),学习两个参数Wsm 和 bsm。用Softmax来计算输出结果中各个类别的概率分布。用交叉熵来度量两个概率分布(源样本的概率分布和输出结果 的概率分布)直接的相似性。然后开始计算梯度,这是需要参数Wh1、bh1、Wsm 和 bsm,以及 交叉熵后的结果。随后进入 SGD 训练,也就是反向传播的过程,从上往下计算每一层的参数, 依次进行更新。也就是说,计算和更新的顺序为 bsm、Wsm、bh1 和 Wh1。
张量TensorF ...
Java基础-JVM类加载
类加载过程
JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化
加载
通过一个类的全限定名来获取其定义的二进制字节流。
将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。
在Java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口。
JVM中的ClassLoader类加载器加载Class发生在此阶段
这里不一定非得要从一个Class文件获取,这里既可以从ZIP包中读取(比如从jar包和war包中读取),也可以在运行时计算生成(动态代理),也可以由其它文件生成(比如将JSP文件转换成对应的Class类)。
验证验证的目的是为了确保Class文件中的字节流包含的信息符合当前虚拟机的要求,而且不会危害虚拟机自身的安全。不同的虚拟机对类验证的实现可能会有所不同,但大致都会完成以下四个阶段的验证:文件格式的验证、元数据的验证、字节码验证和符号引用验证。
文件格式的验证:验证字节流是否符合Class文件格式的规范,并且能被当前版本的虚拟机处理,该验证的主要目的是保证输入的字节流能正确地解析并存储于方法区之内。经过该阶段的 ...
Java基础-JVM内存模型
JRE(JavaRuntimeEnvironment,Java运行环境)也就是Java平台。所有的Java 程序都要在JRE下才能运行。普通用户只需要运行已开发好的java程序,安装JRE即可。
JDK(Java Development Kit)是程序开发者用来编译、调试java程序用的开发工具包。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是 安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。
JVM(JavaVirtualMachine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。
内存模型程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的(正在执行)字节码的行号指示器。 ...
go-ethereum-简单搭建私有链
Geth
https://ethereum.github.io/go-ethereum/install/
安装 geth:访问https://geth.ethereum.org/downloads/,下载Geth for macOS。给geth做一个软连接到/usr/local/bin目录下,然后在命令行输入:geth version 显示如下边上安装成功使用homebrew安装:
12brew tap ethereum/ethereumbrew install ethereum
Geth工具介绍:
Geth工具是Go Ethereum, 是以太坊的官方客户端(Go语言实现)
Geth的命令行中包含了大多数的以太坊的命令,包括账户新建,账户之间的以太币转移,挖矿,获取余额,部署以太坊合约等
配置私链节点新建文件夹,命名随意,在此文件夹下创建genesis.json文件和data文件夹genesis.json内容如下
1234567891011121314151617{ "config": { ...
Java基础-Thread概述
线程生命周期线程状态:
新建状态:使用new关键字和Thread类或其子类建立一个线程对象后
就绪状态:当线程对象调用了start()方法之后,该线程进入就绪状态
运行状态:如果就绪状态的线程获取CPU资源,就可以执行run()
阻塞状态:
等待阻塞:运行状态中的线程执行wait()方法
同步阻塞:线程在获取 synchronized 同步锁失败
其他阻塞:通过调用线程的sleep()或join()发出I/O请求时
死亡状态:一个运行状态的线程完成人文或者其他终止条件发送
创建线程1、继承Thread类
1class ThreadDemo extends Thread
2、实现Runable接口
123public class RunTest implements Runnable Thread thread1 = new Thread(new RunTest());
3、通过Callable、Future、FutureTask创建线程
1234// 继承实现Callable接口,声明返回类型class CallTest implements Callable&l ...
RPC原理 概述
远程过程调用(Remote Procedure Call,缩写为RPC)是一种计算机通信协议。该协议运行运行与一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用。——维基百科
RPC调用分类同步调用:客户方等待调用执行完成并返回结果异步调用:客户方调用后不用等待执行结果返回,但依然可以通过回调通知等方式获取返回结果。 若客户方不关心调用返回结果,则变成单向异步调用,单向调用不用返回结果
RPC结构RPC 服务方通过 RpcServer 去导出(export)远程接口方法,而客户方通过 RpcClient 去引入(import)远程接口方法。 客户方像调用本地方法一样去调用远程接口方法,RPC 框架提供接口的代理实现,实际的调用将委托给代理 RpcProxy 。 代理封装调用信息并将调用转交给 RpcInvoker 去实际执行。 在客户端的 RpcInvoker 通过连接器 RpcConnector 去维持与服务端的通道 RpcChannel, 并使用 RpcProtocol 执行 ...
Yarn 概述
名词介绍ResourceManager:简称RM,是YARN资源控制框架的中心模块,负责集群中所有的资源的统一管理和分配,它接收来自NM(NodeManager)的汇报,建立AM,并将资源派送给AM(ApplicationMaster)。NodeManager:简称NM,NodeManager是ResourceManager在每台机器上的代理,负责容器的管理,并监控他们的资源使用情况(CPU、内存、磁盘及网络等),以及向ResourceManager提供这些资源使用报告。ApplicationMaster:简称AM,YARN中每个应用都会启动一个AM,负责向RM申请资源,请求NM启动container,并告诉container要做什么事情。Container:资源容器。YARN中所有的应用都是在container之上运行的。AM也是在container上运行的,不过AM的container是RM申请的。Apache Hadoop YARN(Yet Another Resource Negotiator,另一个资源协调者):是一种新的Hadoop资源管理器,它是一个通用资源管理系统。
...