卷积神经网络工作原理解释
从最基础的开始
对二维数字信号(图像)的操作,可以写成矩阵形式。
比如对图像做平滑,一个典型的8领域平滑,其结果中的每个值都来源于原对应位置和其周边8个元素与一个3X3矩阵的乘积:
也就相当于对原矩阵,按照顺序将各区域元素与W矩阵相乘,W 矩阵为
这也被称作核(Kernel, 3X3)
其处理效果如下:
也就是,这个核对图像进行操作,相当于对图像进行了低通滤波。因此这个核也被称为滤波器,整个操作过程按照概念称为卷积。
more >>从最基础的开始
对二维数字信号(图像)的操作,可以写成矩阵形式。
比如对图像做平滑,一个典型的8领域平滑,其结果中的每个值都来源于原对应位置和其周边8个元素与一个3X3矩阵的乘积:
也就相当于对原矩阵,按照顺序将各区域元素与W矩阵相乘,W 矩阵为
这也被称作核(Kernel, 3X3)
其处理效果如下:
也就是,这个核对图像进行操作,相当于对图像进行了低通滤波。因此这个核也被称为滤波器,整个操作过程按照概念称为卷积。
more >>为了编程的方便,kotlin中为我们提供了一些常用的扩展函数和顶层函数,掌握好这些函数可以大大的提高我们的编程效率
let函数扩展了所有的泛型对象,默认当前这个对象作为闭包的it参数,而返回值是闭包函数的最后一行,或者指定其return.
函数定义为:
|
|
最近重装了一次mac,并且重做了一下开发环境,结果以前的sourceTree项目的GIT密码始终保存不到Mac的钥匙串中,明明在钥匙串中是存在的.但是在使用sourceTree pull/push代码的时候还是需要再输入密码,很是繁琐.
more >>单元测试的作用以及重要性其实不用在这里不断的重复了.为了保证软件的可靠性,单元测试可能是最容易执行的一个可靠的手段了.一方面,程序员通过编写单元测试来验证自己程序的有效性,另外一方面,管理者通过持续自动的执行单元测试和分析单元测试的覆盖率等来确保软件本身的质量.
JAVA生态圈里面说起单元测试一般都会使用JUnit
或者TestNG
.其中JUnit
可能使用的更加频繁一些,JUnit4
使用注解以及各种其他框架对它的支持,形成了一个完善的单元测试的生态圈.
现在的JAVA WEB项目中,起码一半以上的项目是使用了Spring的.因此,单纯的使用JUnit
来进行单元测试并不是十分的好用,对于由Spring管理的Bean
要进行单元测试,首先需要实例化Spring上下文,然后又需要手动的去注入依赖的Bean
,比较麻烦.特别是对于有事务的单元测试,或数据库数据测试,单独使用JUnit
几乎无法完成.
所幸,SpringFramework也意识到了这点,于是推出了spring-test
模块,他能完成Spring环境与Junit单元测试环境的对接.让我们只专注于单元测试本身进行书写,而由它来完成Spring容器的初始化、Bean
的获取、数据库事务的管理、数据操作正确性检查等等。
Swift 2.2 随着 iOS 9.3 一同闪亮登场,相较于 Swift 2.1, 2.2 版本做出了许多调整,从其调整方向上我们也能一窥 Swift 3.0 的影子,以下内容主要来自于苹果 Swift 官方 Blog,接下来就让我们进入正题,一睹 Swift 2.2 的庐山真面目:
SE-0001: Allow (most) keywords as argument labels
参数标签是 Swift 中非常 cool 的一个特性,我们可以这么写:
|
|
这个函数很简单,由 1 开始,每次加 2,返回一系列的值,最后的结果要小于 9:
|
|
上面的函数如果参数前没有 to
或 by
标签,即 stride(9, 2)
那么代码将失去自解释性,别人也很难猜到这些参数的实际用途。
又假设我们要获取集合中某个值对应的索引,可以声明如下方法:
|
|
但是注意在 Swift 2.2 之前的版本,上面这种写法 Xcode 会报错,因为 in 是一个关键字,想要使用这些关键字必须加上单引号:
|
|
以前我们定义新的 API 的时候,通常也要避免与这些关键字撞车,比如用 within
代替 in
。在我们导入 Objective-C APIs 的时候通常会碰到这些问题:
|
|
因为我的开源项目zkClient4Swift的需要,要在Swift连接Socket,因此涉及到了使用NSStream来进行网络的流交互.特此把使用的过程整理出来供大家参考.
通常在跨语言的交互中,由于语言对于数据结构的存储是不一样的,因此,会使用流的方式来进行交互.流交互方式与语言和设备无关.流是在通信隧道中串行传输的连续的比特位序列.从编码的角度来说,流是单向同步的.因此,一般流都分为了输入流(InputStream)和输出流(OutputStream).这些流的数据通常只能使用一次,消耗完后,就无法从流对象中再次的获取或写入.
在Swift中,与流相关的主要是三个类:NSStream
,NSInputStream
,NSOutputStream
.除开NSStream
是一个抽象的基类外,剩下的两个类分别对应了输入流和输出流的所有属性和操作.
在NSInputStream
或NSOutputStream
中,可以对文件
,Socket
,NSData
中获取数据.由于我这次是进行网络交互,因此,主要说下针对Socket
进行的操作.
NSStream
对象中有一个属性delegate
用来指定流事件的代理对象,这个也是整个NSStream
最总要的方法.我们可以自己实现NSStreamDelegate
协议并复制给NSInputStream
或NSOutputStream
的delegate
属性,每当有流事件的时候,就会调用NSStreamDelegate
协议的public func stream(aStream: NSStream, handleEvent eventCode: NSStreamEvent)
方法实现,从而处理流相关的所有处理.
而对于输入流来说,我们可以使用public func read(buffer: UnsafeMutablePointer<UInt8>, maxLength len: Int) -> Int
方法来获取数据.
而对于输出流来说,我们可以使用public func write(buffer: UnsafePointer<UInt8>, maxLength len: Int) -> Int
方法来写入数据.
对于NSStreamDelegate
协议的public func stream(aStream: NSStream, handleEvent eventCode: NSStreamEvent)
方法,主要是需要了解NSStreamEvent
事件类型,它们主要有:
最近由于程序的需要,要与JAVA的服务端进行Socket的交互,那么这就牵涉到了数据的交互.Socket的数据交互一般都是直接采用二进制Bytes的方式来传递,那么就需要把Swift中的各种基本数据转换成为JAVA服务器可以认可的Bytes字节数组,以及把JAVA的字节数组反序列化为Swift中的基本数据.
要在不同程序中进行字节数组的数据交换,有个很重要的东西就是字节序
.字节序
顾名思义就是字节的顺序,也就是大于1个字节类型的数据在内存中存放的顺序.这个在跨平台以及网络程序交互中非常的重要.
常见的字节序主要有两类:Big-Endian
和Little-Endian
.它们的定义为:
let a = Int32(2)
分别采用Big-Endian
和Little-Endian
的情况如下:字节号 | 0 | 1 | 2 | 3 |
---|---|---|---|---|
Big-endian | 00 | 00 | 00 | 02 |
Little-Endian | 02 | 00 | 00 | 00 |
也就是他们两个是相反的.Big-Endian
和Little-Endian
跟CPU的指令有关,每一种CPU不是Big-Endian
就是Little-Endian
.常见的IA架构的CPU,比如Intel或AMD的都是使用的Little-Endian
,而PowerPC活着SPARC的处理器则是Big-Endian
的.而在互联网的网络交互以及TCP协议中使用的是Big-Endian
,JAVA的虚拟机中的字节序是Big-Endian
的.而Swift由于是运行在IA架构的CPU上的,因此,它的字节序是Little-Endian
的.
正是由于运行在X86上的Swift
和JAVA
的字节序是相反的,因此,它们两个进行跨语言的网络数据交互的时候,就需要对数据进行字节序的转换.否则就会出现数据读取错误的情况,比如用JAVA
采用Big-Endian
序的Int3202000000
,Swift
采用Little-Endian
序解析出来是33554432
而不是期望的2
.
最后这个部分讲一讲AKKA中的事件消息类型. 在Akka中主要是有三种消息类型,每一种类型对应了不同的使用场景.他们分别是:Fire and Forget模式
,Send and Receive模式
和Publisher-Subscriber模式
.
这种发送消息的模式是Akka中所推荐的,也是我们前面一直在使用的方式.也就是单向消息模式,Actor在发送消息之后,并不需要获取响应.这种方式在JAVA中需要使用ActorRef
或ActorSelection
的tell
方法.和消息队列类似,直接调用该方法即可,程序不会阻塞,会直接执行后面的操作,但是消息已经发送给目标的Actor了.这种方式的具体使用方法前面已经列举了很多了,这里就不再重复的举例了.
这种发送消息的模式是双向的,当Actor在发送消息之后,会接收到一个Future对象.和JAVA的Future一样,通过这个可以异步的接收到对方的结果消息.
在整个AKKA中,提供了一套完整的Future机制,不光是在Actor传递消息间可以使用,也可以在非Actor中直接使用.
more >>作者:Natasha,原文链接,原文日期:2015-12-17
译者:小锅;校对: ;定稿:千叶知风
回溯到八月份,我观看了 Swift in Practice WWDC15 这个超赞的视频。视频的第一部分让我印象十分深刻,因此我针对这部分写了一篇博客—— A Beautiful Solution to Non-Optional UIImage Named in Swift ——然后我最终开始准备写关于这个视频的第二部分,甚至其它更多令人激动的部分(毕竟,假期是最好的写博客的时机)(译者注:大神就是这样啊,假期不是用来玩的,反而是写博客的大好时机)。
这次,我准备写的是:处理多个 segue 标识的优雅解决方案。你猜对了!就是使用协议。
今天就让我们开始针对你的选择展开旅程吧。你会选择:红色药丸还是蓝色药丸…(译者注:如果你看不懂这个梗的话,我建议你去补习一下黑客帝国)
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true