AI

您将深入了解人工智能(AI)的核心技术与应用,包括机器学习、深度学习、自然语言处理、计算机视觉等热门领域。我们提供最新的AI教程、技术文章、行业案例与实践指南,帮助您掌握AI技术,提升编程与数据分析能力。无论您是AI初学者还是专业开发者,都可以在这里找到丰富的学习资源,助力您的职业发展与技术创新。关注我们的AI板块,了解AI最新趋势,抢占未来科技先机!

PyTorch JIT和TorchScript,一个API提升推理性能50%

PyTorch JIT和TorchScript,一个API提升推理性能50%

PyTorch支持两种模式:eager模式和script模式。eager模式主要用于模型的编写、训练和调试,script模式主要是针对部署的,其包含PytorchJIT和TorchScript(一种在 PyTorch 中执行高效的序列化代码格式)。 script模式使用torch.jit.trace和torch.jit.script创建一个PyTorch eager module的中间表示(intermediate representation, IR),IR 经过内部优化,并在运行时使用 PyTorch JIT 编译。PyTorch JIT 编译器使用运行时信息来优化 IR。该 IR 与 Python 运行时是解耦的。 PyTorch JIT(Just-In-Time Compilation)是 PyTorch 中的即时编译器。 1. 它允许你将模型转化为 TorchScript 格式,从而提高模型的性能和部署效率。 2. JIT 允许你在动态图和静态图之间无缝切换。你可以在

四种常见的POST提交数据方式

四种常见的POST提交数据方式

HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样: <method> <request-URL> <version> <headers> <

ajax发送请求无法加载等待模态框?

ajax发送请求无法加载等待模态框?

虽说现在谈论jQuery已经很low了,但出于维护旧项目的需要,还是重新学习了一遍。当我们向后台发送请求的时候,为了照顾用户体验,需要使用等待模态框框来过渡。今天遇到的一个坑是,无论怎么发送请求,界面都不会出现模态框,即使有也是一闪而过。代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test</title> <script src="./js/jquery-3.1.1.js" type=

Promise 对象

Promise 对象

Promise 的含义 Promise 是异步编程的一种解决方案,主要用于解决js回调地狱的问题。所谓 Promise ,就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。 Promise 对象有以下两个特点: 1. 对象的状态不受外界影响。 Promise 对象代表一个异步操作,有三种状态: * pending (进行中) * fulfilled (已成功) * reject (已失败) 只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这 也是 Promise 这个名字的由来。它的英语意思就是“承诺”,表示其他手段无法改变。 1. 一旦状态改变,就不会再变。 Promise 对象的状态改变,只有两种可能: * pending -> fulfilled * pending -&

Module的export和import命令

AI

Module的export和import命令

export export 命令用于规定模块的对外接口, import 命令用于输入其他模块提供的功能。 一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用 export 关键字输出该变量。下面是一个 JS 文件,里面使用 export 命令输出变量: // profile.js export var firstName = "Michael"; export var lastName = "Jackson"; export var year = 1958; ES6将其视为一个模块,里面用 export 命令对外部输出了三个变量。 export 还有另外一种写法: // profile.js var firstName = 'Michael'; var

Linux定时任务:crontab

Linux定时任务:crontab

Linux系统是由 cron 这个系统服务来控制的。Linux系统上面原本就有非常多的计划性任务,因此这个系统服务是默认启动的。但是使用者也可以设置计划任务,Linux系统提供了控制计划任务的命令:crontab crond crond 是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动 crond 进程,crond 进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 任务调度 Linux下的任务调度分为两类: * 系统任务调度:系统周期性所要执行的工作。 * 常见的系统工作有: * 写缓存数据到硬盘 * 日志清理等 * 全局配置文件( /etc 目录 ) * cron.d : 系统自动定期执行的任务。 * crontab : 设定定时任务执行文件。 * cron.deny : 用于控制不让哪些用户使用 crontab 的功能。 * cron.hourly : 每小时执行一次的任务。 * cro

tmux - 终端复用工具

tmux - 终端复用工具

当运行一个web应用时,我们希望在退出登录或关闭终端的时候,web应用仍然能够运行,这时候就要用到 nohup 。nohup 有个缺点就是它会将输出重定向到 nohup.out 文件,虽然也有其他方法能够在终端实时查看 nohup 输出,但重新登录服务器的时候,这些输出将会丢失。 同样的,当我们想在终端进行其他活动时,就必须打开一个新的终端,这显然不够greek。 基于上述两个痛点,tmux就派上用场了。tmux主要有如下三大功能: * 保护现场:即使命令行的工作只进行到一半,关闭终端后还可以重新进入到操作现场,继续工作。对于ssh远程连接而言,即使网络不稳定也没有关系,掉线后重新连接,可以直奔现场,之前运行中的任务,依旧在跑,就好像从来没有离开过一样;特别是在远程服务器上运行耗时的任务,tmux可以帮你一直保持住会话。如此一来,你就可以随时随地放心地进行移动办公,只要你附近的计算机装有tmux(没有你也可以花几分钟装一个),你就能继续刚才的工作。 * 分屏:tmux窗口中,新开的pane,默认进入到之前的路径,如果是ssh连接,登录状态也依旧保持着,如此一来,我就可以随意的增删

常见NLP面试问答

AI

常见NLP面试问答

1. HMM vs MEMM vs CRF HMM -> MEMM HMM模型中存在两个假设: 1. 输出观察值之间严格独立。MEMM解决了HMM输出独立性假设的问题。因为HMM只限定在了观测与状态之间的依赖,而MEMM引入自定义特征函数,不仅可以表达观测之间的依赖,还可表示当前观测与前后多个状态之间的复杂依赖。 2. 状态的转移过程中当前状态只与前一状态有关。但实际上序列标注问题不仅和单个词相关,而且和观察序列的长度,单词的上下文,等等相关。 MEMM -> CRF: * CRF不仅解决了HMM输出独立性假设的问题,还解决了MEMM的标注偏置问题,MEMM容易陷入局部最优是因为只在局部做归一化,而CRF统计了全局概率,在做归一化时考虑了数据在全局的分布,而不是仅仅在局部归一化,这样就解决了MEMM中的标记偏置的问题。使得序列标注的解码变得最优解。 * HMM、MEMM属于有向图,所以考虑了x与y的影响,但没将x当做整体考虑进去(这点问题应该只有HMM)。CRF属于无向图,没有这种依赖性,克服此问题。 2. 常见的几种优化器 1. SGD θ ← θ