mu

std::bind接口与实现

安稳与你 提交于 2020-04-06 16:23:58
前言 最近想起半年前鸽下来的Haskell,重温了一下忘得精光的语法,读了几个示例程序,挺带感的,于是函数式编程的草就种得更深了。又去Google了一下C++与FP,找到了一份 近乎完美的讲义 ,然后被带到C++20的ranges library,对即将发布的C++20满怀憧憬。此时,我猛然间意识到,看别人做,觉得自己也能做好,在游戏界叫云玩家,在编程界就叫云程序员啊! 不行,得找点事干。想起同样被我鸽了很久的 <functional> 系列,刚好与函数式编程搭点边,就动笔写吧!这就是本文的来历。 找来GCC 8.1.0的标准库,在 <functional> 中找到了 std::bind 的实现。花了好长时间终于读懂了,原来 std::bind 的原理一点都不复杂。此外, std::bind 的实现依赖于 std::tuple ,本文理应从后者开始讲起,但是又看了看 <tuple> 的长度和难度,写 std::tuple 未免喧宾夺主了。所以,本文将聚焦于 std::bind 的实现,其他标准库组件就当现成的来用了。 接口 你能点开这篇文章,说明你一定明白 std::bind 是干什么用的,以及应该怎么用,我就不赘述了。简而言之, std::bind 用于给一个可调用对象绑定参数。可调用对象包括函数对象(仿函数)、函数指针、函数引用、成员函数指针和数据成员指针

数字签名与数字证书的原理

浪子不回头ぞ 提交于 2020-04-06 13:52:05
在了解数字签名和数字证书之前,可以先了解一下加密算法的一些常见分类,我之前写了一篇介绍常见加密算法的文章。 https://www.cnblogs.com/mysticbinary/p/12615063.html 将军与士兵通信 ---- 数字签名原理 为了用最简单的方式来讲解数字签名,我下面模拟几个在军事角色来讲解,加密算法的起源就是为了战争服务的。下面的实验演示使用一个在线网站: http://tool.chacuo.net/cryptrsapubkey 假设有一个德国将军和一个德国士兵需要通信,那么他们为了安全考虑,决定采用RSA非对称加密算法。 将军拿私钥、士兵拿公钥 将军拿着私钥: -----BEGIN PRIVATE KEY----- MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAOFLM8+cWfjWJrP6 3i0jiRtpc240U6wjyEV4Ji2XA8UpFsRMdsFLXRsy9Rs5YsW1GBlXcv3bgZD2itui YSYnWdbJpI7yIFtkDKJZQ/k8kmH9v2QePUwzAbvXZsZ9hg92ORGms2nNT3DhQHNQ wopSgdThz8Ztvhd4Er0s1M9ZAvhjAgMBAAECgYEAxwNLTUXsJGfn4Gzm/jC52MEZ

OpenCV-Python 使用OCR手写数据集运行SVM | 五十六

不问归期 提交于 2020-04-05 18:55:00
目标 在本章中,我们将重新识别手写数据集,但是使用SVM而不是kNN。 识别手写数字 在kNN中,我们直接使用像素强度作为特征向量。这次我们将使用定向梯度直方图(HOG)作为特征向量。 在这里,在找到HOG之前,我们使用其二阶矩对图像进行偏斜校正。因此,我们首先定义一个函数 deskew() ,该函数获取一个数字图像并将其校正。下面是deskew()函数: def deskew(img): m = cv.moments(img) if abs(m['mu02']) < 1e-2: return img.copy() skew = m['mu11']/m['mu02'] M = np.float32([[1, skew, -0.5*SZ*skew], [0, 1, 0]]) img = cv.warpAffine(img,M,(SZ, SZ),flags=affine_flags) return img 下图显示了应用于零图像的上偏移校正功能。左图像是原始图像,右图像是偏移校正后的图像。 接下来,我们必须找到每个单元格的HOG描述符。为此,我们找到了每个单元在X和Y方向上的Sobel导数。然后在每个像素处找到它们的大小和梯度方向。该梯度被量化为16个整数值。将此图像划分为四个子正方形。对于每个子正方形,计算权重大小方向的直方图(16个bin)。因此

【NLP面试QA】基本策略

☆樱花仙子☆ 提交于 2020-04-05 18:51:37
目录 防止过拟合的方法 什么是梯度消失和梯度爆炸?如何解决? 在深度学习中,网络层数增多会伴随哪些问题,怎么解决? 关于模型参数 模型参数初始化的方法 模型参数初始化为 0、过大、过小会怎样? 为什么说模型参数越小,模型越简单 正则化 Regularization 正则化方法 正则化如何解决过拟合的 如何在代码中加入正则化 关于梯度下降 Batch/Mini-Batch/SGD梯度下降 增大 batch size 的影响 优化算法(Momentum/RMSProp/Adam) 归一化 Normalization 深度学习中的 Internal Covariate Shift(内部协变量偏移) ICS 会导致什么问题 Normalization 的基本思想与通用框架 为什么 NLP 中用 Layer Normalization 效果较好而 CV 中 Batch Normalization 的效果较好 防止过拟合的方法 根据验证集分数设置 early_stoping 数据增强 dropout 正则化:正则化会使得参数值更小,模型更简单,从而避免过拟合,即奥卡姆剃刀原理 还有一些其他的方法,比如采用对抗训练的方法可以增强模型的鲁棒性和抗干扰能力,也能一定程度上防止过拟合 什么是梯度消失和梯度爆炸?如何解决? 由于梯度反向传播遵循链式求导法则,浅层网络的梯度包含深层网络梯度的累乘项

深度学习归一化:BN、GN与FRN

南笙酒味 提交于 2020-03-25 09:46:34
3 月,跳不动了?>>> 在深度学习中,使用归一化层成为了很多网络的标配。最近,研究了不同的归一化层,如BN,GN和FRN。接下来,介绍一下这三种归一化算法。 BN层 BN层是由谷歌提出的,其相关论文为《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》,即Inception v2的主要思想。大家也可以看回 我以前的博客 ,关于这个BN层的介绍。 BN层的提出,主要解决的一个问题是Internal Covariate Shift。在BN层提出以前,是很难训练一个深层次的网络的,其主要难点是每层的数据分布均会发生变化,使得神经元需要去学习新的分布,导致模型训练缓慢、难以收敛。因此,作者借助了白化的思想,将每层数据都归一化成均值为0、方差为1的分布,如公式(1)所示,即减去均值、除以方差。这样就能是每层的数据分布不会发生过大变化,从而导致模型容易训练。 $$\hat{x}^{(k)}=\frac{x^{(k)}-E[x^{(k)}]}{\sqrt{Var(x^{(k)})}} \tag{1}$$ 但同时也引入了一个问题,我们将数据强行的归一化,会导致原始的数据分布遭到破坏,特征的表达能力就会下降。所以,BN层的核心亮点是 重构变换

Scikit-Learn&More,用于机器学习的综合数据集生成

怎甘沉沦 提交于 2020-03-23 19:59:27
3 月,跳不动了?>>> CDA数据分析师 出品 尽管成熟的算法和开源代码库可供机器学习从业人员广泛使用,但使用足够的数据去应用这些技术仍然是一个核心挑战。现在让我们了解如何利用scikit-learn和其他工具来生成适合优化和微调模型的综合数据。 --- Kevin Vu 越来越明显的是,谷歌,Facebook和微软等大型科技巨头对最新的机器学习算法和软件包非常慷慨(它们免费提供这些),因为目前算法世界的入门门槛很低。开源社区和工具(例如scikit-learn)已经走了很长一段路, 大量的开源计划正在推动数据科学,数字分析和机器学习的发展。站在2018年,我们可以肯定地说, 算法,编程框架和机器学习套件(甚至是学习这些技术的教程和课程)不是稀缺资源,而是高质量数据。 在调整和微调这些算法时,这通常成为数据科学(DS)和机器学习(ML)从业者的棘手问题。明智的是,从一开始就应该指出当前的文章,与算法研究、教学法学习和模型原型的数据稀缺有关,而不是与扩展和运行商业运作有关。这不是关于如何获取时尚旅行或时尚应用程序的数据的讨论。这种消费者,社会或行为数据收集会给自己带来问题。但是,即使是访问质量数据集以测试特定算法方法的局限性和变化性之类的简单操作,也往往不是那么简单。 为什么需要综合数据集? 如果是从头开始学习,则最合理的建议是从简单的小规模数据集入手

源码解读 Golang 的 sync.Map 实现原理

谁说胖子不能爱 提交于 2020-03-23 13:17:46
3 月,跳不动了?>>> 简介 Go 的内建 map 是不支持并发写操作的,原因是 map 写操作不是并发安全的,当你尝试多个 Goroutine 操作同一个 map ,会产生报错: fatal error: concurrent map writes 。 因此官方另外引入了 sync.Map 来满足并发编程中的应用。 sync.Map 的实现原理可概括为: 通过 read 和 dirty 两个字段将读写分离,读的数据存在只读字段 read 上,将最新写入的数据则存在 dirty 字段上 读取时会先查询 read,不存在再查询 dirty,写入时则只写入 dirty 读取 read 并不需要加锁,而读或写 dirty 都需要加锁 另外有 misses 字段来统计 read 被穿透的次数(被穿透指需要读 dirty 的情况),超过一定次数则将 dirty 数据同步到 read 上 对于删除数据则直接通过标记来延迟删除 数据结构 Map 的数据结构如下: type Map struct { // 加锁作用,保护 dirty 字段 mu Mutex // 只读的数据,实际数据类型为 readOnly read atomic.Value // 最新写入的数据 dirty map[interface{}]*entry // 计数器,每次需要读 dirty 则 +1 misses int }

jstat查看jvm内存占用情况

一个人想着一个人 提交于 2020-03-14 15:13:02
命令 jstat -gc 18573 5000 18573 是jvm进程号PID 5000 表示 间隔5s打印一次 S0C:年轻代中第一个survivor(幸存区)的容量 (字节) S1C:年轻代中第二个survivor(幸存区)的容量 (字节) S0U :年轻代中第一个survivor(幸存区)目前已使用空间 (字节) S1U :年轻代中第二个survivor(幸存区)目前已使用空间 (字节) EC :年轻代中Eden(伊甸园)的容量 (字节) EU :年轻代中Eden(伊甸园)目前已使用空间 (字节) OC :Old代的容量 (字节) OU :Old代目前已使用空间 (字节) MC:metaspace(元空间)的容量 (字节) MU:metaspace(元空间)目前已使用空间 (字节) YGC :从应用程序启动到采样时年轻代中gc次数 YGCT :从应用程序启动到采样时年轻代中gc所用时间(s) FGC :从应用程序启动到采样时old代(全gc)gc次数 FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s) GCT:从应用程序启动到采样时gc用的总时间(s) 来源: oschina 链接: https://my.oschina.net/liangxiao/blog/3194787

解谜游戏 MU Complex 的过关图文攻略 (Episode1)

a 夏天 提交于 2020-03-02 10:57:16
MU Complex的操作界面有些像linux,我今天偶然发现了这个游戏,一下子就喜欢上了。 经过了几个小时的努力,终于通关了,总结了下,发篇攻略 :-) 游戏地址在: http://www.kongregate.com/games/studiocime/mu-complex-episode-one 不过在看攻略前要先说明一点,这个游戏还是很有意思的, 建议先自己玩一下再看后面的内容 这个游戏现在总共有10关,下面是这10关的介绍 1.第一关 第一关的目标很简单,就是要登录系统,这关可以输入4个命令(通过help命令可以查到) login #登录系统 password #显示密码 help #显示帮助 motd #输出上一个指令 输入“password”获取密码,系统提示密码为“brucedayton”,输入“login”登录系统,再把这个密码输入,过关! 这个游戏里所有的标识符都不检查大小写,所以输入的时候不用考虑大小写转换的问题 2.第二关 这一关是一个“能力测试”,目标还是要找到一个密码登录系统。这关可以输入6个命令: up #显示系统信息 login #登录系统 ls #显示目录信息 cat #显示文件内容 help #显示帮助 motd #输出上一个指令 输入“ls”命令后,可以看到四个文件,有一个是password.txt。输入“cat password.txt”

解谜游戏 MU Complex 的过关图文攻略 (Episode2)(中)

青春壹個敷衍的年華 提交于 2020-03-02 10:56:56
本文的游戏继续前文展开,其他各篇MU Complex攻略地址如下: 解谜游戏 MU Complex 的过关图文攻略 (Episode1) http://my.oschina.net/Tsybius2014/blog/358145 解谜游戏 MU Complex 的过关图文攻略 (Episode2)(上) http://my.oschina.net/Tsybius2014/blog/693873 解谜游戏 MU Complex 的过关图文攻略 (Episode2)(下) http://my.oschina.net/Tsybius2014/blog/693923 我们下一步要进军的是地图右上角的Section,为此我们需要先登录主机evanice 使用ssh命令登录evanice evanice被形容为一个“stupid girl”,因为巡查员说她的密码太过简单,容易被破解,不过,在securty.note中,evanice为自己辩解说自己的密码足够安全了。 在hint文件中可以找到evanice密码的线索: 这个线索每次玩游戏时都不一样,也有可能是“mxslwhu << 3”等,不过解谜的方法都是不变的,即对所有的字母取前第n个字母进行替换,evanice使用了最为简单的凯撒密码对自己的密码进行加密,最后求出的密码是“jupiter”。使用ssh-agent命令并输入密码