无量心 生福报 无极限无极限 生息息 爱相连为何君视而不见 规矩定方圆悟性 悟觉 悟空 心甘情愿
放下 颠倒梦想 放下云烟放下 空欲色 放下悬念多一物 却添了 太多危险少一物 贪嗔痴 会少一点若是缘 再苦味也是甜若无缘 藏爱 在心田尘世 藕断还丝连 回首一瞬间种颗善因 陪你走好每一天
唯有 心无挂碍 成就大愿唯有 心无故 妙不可言算天算地 算尽了 从前算不出 生死 会在哪一天勿生恨 点化虚空的眼勿生怨 欢喜 不遥远缠绕 欲望的思念 善恶一瞬间心怀忏悔 陪你走好每一天
再牢的谎言 却逃不过天眼明日之前 心流离更远浮云霎那间 障眼 人心渐离间集苦连连 不断的出现
无量心 生福报 无极限无极限 生息息 爱相连凡人却视而不见 规矩定方圆悟性 悟觉 悟空 心甘情愿简简单单 陪你走好每一天
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-detail/247 声明:版权所有,转载请联系平台与作者并注明出处 收藏ShowMeAI查看更多精彩内容 本系列为斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》的全套学习笔记,对应的课程视频可以在 这里 查看。
ShowMeAI为CS224n课程的全部课件,做了中文翻译和注释,并制作成了 GIF动图!点击 第11讲-NLP中的卷积神经网络 查看的课件注释与带学解读。更多资料获取方式见文末。
引言 CS224n是顶级院校斯坦福出品的深度学习与自然语言处理方向专业课程,核心内容覆盖RNN、LSTM、CNN、transformer、bert、问答、摘要、文本生成、语言模型、阅读理解等前沿内容。
本篇笔记对应斯坦福CS224n自然语言处理专项课程的知识板块:NLP中的卷积神经网络。主要讲解卷积神经网络的结构,及其在NLP场景下的使用方式,一些模块和可调结构。
笔记核心词 卷积神经网络 / CNN 卷积层 池化层 多卷积核 多通道 / Multiple-Channels 卷积核 N-gram filter k-max pooling 文本分类 1.NLP中的卷积神经网络 1.1 为什么使用CNN 卷积神经网络是一种特殊结构的神经网络,最早被广泛应用于计算机视觉领域,但在NLP领域同样有着显著的应用效果。它相对于传统神经网络,引入了局部感受野和多滤波器概念,能在控制参数量的情况下,对输入数据进行高效地处理。具体到NLP中,它接收词向量的序列,并首先为所有子短语创建短语向量(embedding),然后CNNs 基于卷积核并行完成数据处理计算。
(关于CNN的细节也可以参考ShowMeAI的对吴恩达老师课程的总结文章 深度学习教程 | 卷积神经网络解读,内含动图讲解)
1.2 什么是卷积 我们从一维的情况开始。考虑两个一维向量 \(f\) 和 \(g\) ,其中 \(f\) 是主向量,\(g\) 是 filter。\(f\) 和 \(g\) 之间的卷积,第 \(n\) 项处的值表示为 \((f \ast g)[n]\),它等于 \(\sum_{m=-M}^{M} f[n-m] g[m]\) 。
类对象:ClassB
let ClassB = { ClassName:'ClassB', GetName() { alert(1); } } export default ClassB; 调用:ClassA import ClassB from './ClassB.js' ClassB.GetName(); //document.getElementById('root').value = ClassB.ClassName; 页面:Html
<!DOCTYPE html> <html> <head> <meta charset=UTF-8> <title>Insert title here</title> <script src=https://unpkg.com/babel-standalone@6/babel.min.js></script> </head> <body> <input id='root' /> <script src=js/ClassB.js type=module></script> <script src=js/ClassA.js type=module></script> </body> </html>
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-detail/248 声明:版权所有,转载请联系平台与作者并注明出处
收藏ShowMeAI查看更多精彩内容
ShowMeAI为斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》课程的全部课件,做了中文翻译和注释,并制作成了GIF动图!
本讲内容的深度总结教程可以在这里 查看。视频和课件等资料的获取方式见文末。
引言 授课计划 Announcements Intro to CNNs / 卷积神经网络介绍 Simple CNN for Sentence Classification: Yoon (2014) / 应用CNN做文本分类 CNN potpourri / CNN 细节 Deep CNN for Sentence Classification: Conneauet al. (2017) / 深度CNN用于文本分类 Quasi-recurrent Neural Networks / Q-RNN模型 欢迎来到课程的下半部分! 现在,我们正在为你准备成为 DL+NLP 研究人员/实践者
课程不会总是有所有的细节
这取决于你在网上搜索/阅读来了解更多 这是一个活跃的研究领域,有时候没有明确的答案 Staff 很乐意与你讨论,但你需要自己思考 作业的设计是为了应付项目的真正困难
栈的简介 栈是一种线性的逻辑结构,可依赖数组和链表这两种物理结构实现,是一种FILO的结构。以下是生活中遇到的栈的结构:
栈的形式化定义为 栈(Stack)简记为 S,是一个二元组,顾定义为S = (D, R)其中:D 是数据元素的有限集合;R 是数据元素之间关系的有限集合。
栈顶指针保存栈索引的下标,因此空栈时候top=-1
栈分为:顺序栈( 用数组来保存) 和链栈
栈的 基本操作 由于栈只能在栈顶进行操作, 所以栈不能在栈的任意一个元素处插入或删除元素。因此,栈的操作是线性表操作的一个子集。栈的操作主要包括在栈顶插入元素和删除元素、取栈顶元素和判断栈是否为空等等方面的操作。
count\Empty\Full\Push\Pop\Peek
有几种出栈顺序(考题) 顺序栈 自定义顺序栈 源代码如下:
using System; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Drawing.Drawing2D; using System.IO; using System.Text; using System.Threading; using System.Xml; using System.Xml.XPath; namespace LinearList; public class Sample { public struct SequencedStack<T> { private T[] itme; private const int Empty = -1; public int Top { get; set; } = Empty; public bool IsEmpty { get=> Top==Empty; } public bool Full{ get=>Top==itme.
目录14.5 结果期(2016~2022)14.5.1 图形API14.5.1.1 DirectX14.5.1.2 OpenGL14.5.1.3 Vulkan14.5.1.4 Metal14.5.2 硬件架构14.5.3 引擎演变14.5.3.1 综合演变14.5.3.2 光影技术14.5.3.3 移动*台14.5.3.4 并行技术14.5.3.5 特殊技术14.5.4 渲染技术14.5.4.1 Visibility Buffer14.5.4.2 Filmic SMAA14.5.4.3 High Dynamic Range Imaging14.5.4.4 Texture Streaming14.5.4.5 Frame Graph14.5.4.6 Display Latency14.5.4.7 Mesh Shading14.5.4.8 Nanite14.5.4.9 Radiance Caching14.5.4.10 Surfels GI14.5.5 结果期总结14.6 本篇总结14.6.1 游戏引擎的未来14.6.2 结语特别说明参考文献
14.5 结果期(2016~2022) 时间晃荡一下来到了2016年之后,这时期的游戏引擎朝着影视级、更加物理、更高效的方向发展。且看后面分析。
14.5.1 图形API 14.5.1.1 DirectX DirectX在2016年之后主要发力于DirectX 12及相关子本版的更新,包含ID3D12Device、Shading Model 6.x、光线追踪、VRS、根签名、资源、同步、调试、PSO、命令列表、HLSL等方面的新增或改进。具体可参见:DirectX - Wikipedia和What's new in Direct3D 12。
14.5.1.2 OpenGL OpenGL在2016年之后发布了4.6版本,新增或改进了SPIR-V、Multi-draw indirect、顶点着色器获取数据、统计和转换反馈溢出查询、各向异性过滤、夹紧多边形偏移、创建不报错的OpenGL上下文、原子计数器的更多操作、避免不必要的发散着色器调用等特性。
而OpenGL ES在此期间几乎纹丝不动。
14.5.1.3 Vulkan 在2016年及之后,Vulkan发布的版本、时间和特性如下表:
版本 时间 特性 Vulkan 1.
背景 当我们开发好接口之后一般会用一些接口调试工具来进行测试,比如Postman。这时候可以很方便的通过swagger.json文档快速的导入接口到Postman中并在简单的修改之后就可以方便的开始调试。
但是在项目的不断迭代中,出现一种情况使我们的测试管理工作非常的苦恼。Postman虽然可以支持从swagger.json导入,但是每一次的导入都会生成一个新的Collection,那么我们在之前Collection中做的一些配置不得不重新在新的Collection中配置一遍。非常的不优雅。
那么,是否存在一种方案可以优雅的感知到接口的新增和删除,从而再自动的在Postman中生成对应的接口的方法呢?细微的参数修改暂时不在考虑范围内,因为涉及到参数取值等环境变量的问题,未必自动的就可以处理好。答案是有这么一条路,虽然不是很直接。
准备 在我们操作之前,我们先需要知道一些概念,在Postman中导入swagger.json可以生成两部分内容:Collections和APIs。Collections主要对应的是接口实际请求的配置部分,而APIs主要作用是形成接口文档并进行版本管理。所以我们要借助APIs来实现我们的需求。
步骤 1. 导入swagger.json swagger.json的类型一定得是OpenAPI 3,否则后面无法进行validate。
导入的时候选择生成Collection,其他配置根据自己情况来。操作成功后Collections和APIs下都会有对应的项目。
2. 添加一个接口,生成新的swagger.json 3. 更新APIs中的定义 打开APIs中的项目,打开Defination标签页。将新的swagger.json复制在右侧文本框中。保存。
4. 更新Collections 继续打开Documentation标签页,点击Validate against Defination或者Validate again。
点击Review issues查看详情,点击复选框选择,再点击确认将修改应用到Collections。完成新增接口到Collections 5. 操作结果 可以看到新增得Delete2已经出现在了Collections中。 补充 操作完成后,可以察觉到新增的接口没有按标签分组,Postman中又无法方便将请求移动到其他的文件夹。
解决方法是将该Collections导出,修改collection.json,重新组织请求的分组,然后重新导入。但是你又发现了这样导入导出很不优雅。
所以这里再推荐一个库[Github]matt-ball/postman-cli可以方便的将Postman的Collection转换为本地代码项目,然后将本地的修改再同步回Postman。
参考 [Github]matt-ball/postman-cli Documentation | Developing with Postman utilities Documentation | Postman API postman-app-support | Add an option to Update Collection generated from the APIs tab Automatically sync OpenAPI/Swagger spec to collection
对比:
new WeddingCompany(new You()).HappyMarry(); new Thread(()->{System.out.println(我爱你);}).start(); 静态代理总结:
真实对象和代理对象需要实现同一个接口 代理对象需要代理真是角色 静态代理好处:
代理对象可以实现真实对象做不了的事情 真实对象可以专注自己的事情 public class StaticProxy { public static void main(String[] args) { //原来: You you = new You(); WeddingCompany weddingCompany = new WeddingCompany(you); weddingCompany.HappyMarry(); //现在: new WeddingCompany(new You()).HappyMarry(); //对比: new Thread(()->{System.out.println(我爱你);}).start(); } } interface Marry{ void HappyMarry(); } class WeddingCompany implements Marry{ //代理目标 private Marry target; public WeddingCompany(Marry target) { //真实对象 this.target = target; } @Override public void HappyMarry() { before(); //真实对象 target.
mac本地启动es之后发现运行一段时间一分钟就能打印好几条info日志:
[2018-03-13T10:15:42,497][INFO ][o.e.c.r.a.DiskThresholdMonitor] [Sonofelice] low disk watermark [85%] exceeded on [UTyrLH40Q9uIzHzX-yMFXg][Sonofelice][/Users/baidu/Documents/work/soft/data/nodes/0] free: 15.2gb[13.4%], replicas will not be assigned to this node [2018-03-13T10:16:12,505][INFO ][o.e.c.r.a.DiskThresholdMonitor] [Sonofelice] low disk watermark [85%] exceeded on [UTyrLH40Q9uIzHzX-yMFXg][Sonofelice][/Users/baidu/Documents/work/soft/data/nodes/0] free: 15.2gb[13.4%], replicas will not be assigned to this node
看日志的意思就是,节点sonofelice上的磁盘空间使用率超过了85%,空闲15.2gb,占总磁盘空间的13.4%。将不会在该节点上分配副本了。
虽然不影响es的正常功能使用,但是打印一堆日志够烦的,看一下是什么原因呢,能不能关掉。
第一种方式,是简单粗暴的在elasticsearch.yml文件中直接加入下面一行命令:
cluster.routing.allocation.disk.threshold_enabled: false 第二种方式,则是自己控制磁盘空间使用率超过多少的时候不再分配副本。默认是85%,所以才会有上面的日志
cluster.routing.allocation.disk.threshold_enabled: true cluster.routing.allocation.disk.watermark.low: 30gb cluster.routing.allocation.disk.watermark.high: 20gb
案例:
首先来个赛道距离,然后要离终点越来越近 判断比赛是否结束 打印出胜利者 龟兔赛跑开始 故事中是乌龟赢的,兔子需要睡觉,所以我们来模拟兔子睡觉 终于,乌龟赢得比赛 代码:
public class Race implements Runnable{ final int nums=100; private static String winner; public static void main(String[] args) { Race race = new Race(); new Thread(race,兔子).start(); new Thread(race,乌龟).start(); } @Override public void run() { //模拟兔子睡觉 String name = Thread.currentThread().getName(); if (name.equals(兔子)){ try { Thread.sleep(2); } catch (InterruptedException e) { throw new RuntimeException(e); } } for (int i = 1; i <= nums; i++) { boolean gameOver = isGameOver(i); if (gameOver){ break; } System.