infer

TensorRT:NvInfer.h

生来就可爱ヽ(ⅴ<●) 提交于 2020-08-15 16:14:48
版本:5.1.5.0 工欲善其事必先利其器,后面需要使用RT插件,所以还是得学习一下RT的相关代码 NvInfer.h中声明和定义了RT中的大部分 变量、函数、类 等 RT中代码格式较为统一,大体看了设定规则 枚举变量:k+全大写, kFLOAT, kGPU,kCHANNEL 类内变量:k+首字母大写,nbDims 类内函数:小写+首字母大写,setNames(), setInput() 不能派生或者继承的:用大写的“I”进行了标识, ITensor,ILayer 0:命名空间:nvidia + infer --- > nvinfer1 namespace nvinfer1 1:枚举变量 数据类型:float32, float16, int8, int32 enum class DataType : int { kFLOAT = 0, //!< FP32 format. kHALF = 1, //!< FP16 format. kINT8 = 2, //!< quantized INT8 format. kINT32 = 3 //!< INT32 format. }; 设备类型:GPU, DLA enum class DeviceType : int { kGPU, //!< GPU Device kDLA, //!< DLA Core }; 来源: oschina 链接:

掌握 TS 这些工具类型,让你开发事半功倍

谁都会走 提交于 2020-08-13 21:02:59
一、类型别名 TypeScript 提供了为类型注解设置别名的便捷语法,你可以使用 type SomeName = someValidTypeAnnotation 来创建别名,比如: type Pet = 'cat' | 'dog' ; let pet: Pet; pet = 'cat'; // Ok pet = 'dog'; // Ok pet = 'zebra'; // Compiler error 二、基础知识 为了让大家能更好地理解并掌握 TypeScript 内置类型别名,我们先来介绍一下相关的一些基础知识。 2.1 typeof 在 TypeScript 中, typeof 操作符可以用来获取一个变量声明或对象的类型。 interface Person { name: string; age: number; } const sem: Person = { name: 'semlinker', age: 30 }; type Sem = typeof sem; // -> Person function toArray(x: number): Array<number> { return [x]; } type Func = typeof toArray; // -> (x: number) => number[] 2.2 keyof keyof

理解TypeScript中的infer关键字

大憨熊 提交于 2020-08-13 18:38:44
前言 infer 是在 typescript 2.8 中新增的关键字,距离现在 3.9.3 已经有两年出头了,趁着今天刚好使用了 infer ,所以好好整理一番 infer infer 可以在 extends 的条件语句中推断待推断的类型 例如在文档的示例中,使用 infer 来推断函数的返回值类型 type ReturnType<T> = T extends (...args: any []) => infer R ? R : any ; type func = () => number ; type variable = string ; type funcReturnType = ReturnType<func>; // funcReturnType 类型为 number type varReturnType = ReturnType<variable>; // varReturnType 类型为 string 复制代码 在这个例子中, infer R 代表待推断的返回值类型,如果 T 是一个函数,则返回函数的返回值,否则返回 any 仅仅通过这一个例子,是很难看出 infer 是用来干什么的,还需要多看几个例子 infer解包 infer 的作用不止是推断返回值,还可以解包,我觉得这是比较常用的 假如想在获取数组里的元素类型,在不会 infer 之前我是这样做的 type

【Paper】CTC Introduce

帅比萌擦擦* 提交于 2020-08-12 02:22:09
Connectionist Temporal Classification, an algorithm used to train deep neural networks in speech recognition, handwriting recognition and other sequence problems. 1. Problem don’t know the characters in the transcript align to the audio when having a dataset of audio clips and corresponding transcripts. people’s rates of speech vary. hand-align takes lots of time. Speech recognition, handwriting recognition from images, sequences of pen strokes, action labelling in videos. 2. Question Define when mapping input sequences X = [ x 1 , x 2 , … , x T ] X = [x_1, x_2, \ldots, x_T] X = [ x 1 ​ , x 2

是不是有一天想象着让代码自动补全,今天他来了!!!

爷,独闯天下 提交于 2020-08-04 11:57:39
作者:熊唯,黄飞 ,腾讯 PCG/QQ研发中心/CV应用研究组 AI 如果真的可以写代码了,程序员将何去何从?近几年,NLP 领域的生成式任务有明显的提升,那通过 AI 我们可以让代码自动完成后续补全吗?本文主要介绍了如何使用 GPT2 框架实现代码自动补全的功能。 如果 AI 真的可以自己写代码了,程序员将何去何从? 我去年做过一个代码补全的小功能,打包为 androidStudio 插件,使用效果如下: 代码补全模型预测出的结果有时的确会惊吓到我,这也能学到~? 那如果给它见识了全世界的优秀代码,再给足够量级参数和优秀的模型框架,真的可以实现需求作为输入,直接输出代码吗? "我的需求讲完了,你的代码呢?" 希望可以看到这一天。 代码补齐功能有其他优秀插件也已实现,比如 tabnine,Kite 和国产的 aixcoder。本文主要介绍下代码补全功能需要实现的整套流程。主要包括数据,算法和工程。 数据 众所周知,算法工程师大部分时间都在处理数据。 深度学习是使用大数据训练模型的一个过程,数据是很重要的一个模块。人是会累的,休息不好还导致记忆不好。AI 是你给多少数据它就能存储接收多少数据,学不到信息那是人的错,给的数据不好或者算法设计不好。所以我们先尽可能多的准备好训练数据。 1、数据采集 本文的目的是代码补全,训练数据就是代码段。考虑到每种语言风格和语法都不一致

白话typescript中的【extends】和【infer】

孤街浪徒 提交于 2020-05-05 15:31:53
大家好,我是小雨小雨,致力于分享有趣的、实用的技术文章。 内容分为翻译和原创,如果有问题,欢迎随时评论或私信,希望和大家一起进步。 分享不易,希望能够得到大家的支持和关注。 extends typescript 2.8引入了条件类型关键字: extends,长这个样子: T extends U ? X : Y 复制代码 看起来是不是有点像三元运算符: condition ? result(1) : result(2) ,用大白话可以表示为: 如果 T 包含的类型 是 U 包含的类型的 '子集',那么取结果 X ,否则取结果 Y 。 再举几个ts预定义条件类型的例子,加深理解: type NonNullable<T> = T extends null | undefined ? never : T; // 如果泛型参数 T 为 null 或 undefined,那么取 never,否则直接返回T。 let demo1: NonNullable< number >; // => number let demo2: NonNullable< string >; // => string let demo3: NonNullable< undefined | null >; // => never 复制代码 分配式extends T extends U ? X : Y 复制代码

白话typescript中的【extends】和【infer】(含vue3的UnwrapRef)

ε祈祈猫儿з 提交于 2020-05-04 11:41:14
大家好,我是小雨小雨,致力于分享有趣的、实用的技术文章。 内容分为翻译和原创,如果有问题,欢迎随时评论或私信,希望和大家一起进步。 分享不易,希望能够得到大家的支持和关注。 extends typescript 2.8引入了条件类型关键字: extends,长这个样子: T extends U ? X : Y 看起来是不是有点像三元运算符: condition ? result(1) : result(2) ,用大白话可以表示为: 如果 T 包含的类型 是 U 包含的类型的 '子集',那么取结果 X ,否则取结果 Y 。 再举几个ts预定义条件类型的例子,加深理解: type NonNullable<T> = T extends null | undefined ? never : T; // 如果泛型参数 T 为 null 或 undefined,那么取 never,否则直接返回T。 let demo1: NonNullable<number>; // => number let demo2: NonNullable<string>; // => string let demo3: NonNullable<undefined | null>; // => never 分配式extends T extends U ? X : Y 其实就是当上面的T为联合类型的时候,会进行拆分

手撕ts面试题——不能不掌握的ts高级特性(三)

若如初见. 提交于 2020-05-04 09:40:57
引言 在 上一篇 我重点讲述了 ts 的 keyof、in 以及 infer。本期将结合一道笔试题重点讲述 ts 的一些其他内置操作符 。 本期涉及的操作符如下: Partial Required Readonly Pick<T,K extends keyof T> Record<K extends keyof any, T> Exclude<T,U> Extract<T,U> Omit<T, K extends keyof any> 首先还是先讲述一下ts中的这些高级操作符,如果都已经掌握了,可以直接跳到末尾的手撕笔试题。 手撕笔试题 Partial Partial 将属性变为可选属性。举个栗子,iUser 这个接口 name 和 age 是必须的,但是同时又有另一个接口 iOptionUser,接口属性完全一样,只是里面的 name 和 age 是可选的。比较笨的方法当然是手动再写一个。 interface iUser { name: string ; age: number ; } interface iOptionUser { name?: string ; age?: number ; } 复制代码 其实,我们可以看到的是,iOptionUser 只是在属性后添加一个?接口。我们可以简单实现如下(该方法已内置) type Partial<T> = { [P in

Typescript 最佳实践

久未见 提交于 2020-05-02 20:27:42
文章列表: 《一》大话 TypeScript 基本类型 《二》大话 Typescript 枚举 《三》大话 Typescript 接口 《四》大话 Typescript 泛型 《五》大话 Typescript 函数与类 《六》Typescript 最佳实践 为了更好的阅读体验, 可以看. 一年前刚接触 Typescript 的时候, 觉得它加大了代码工作量. 写一大堆东西.为了找某个类型东奔西跑, 引入第三库还经常报错. 然而现在的我想说: 真香. 我们经常吐槽别人代码可维护性特别低, 总是希望别人能够主动的写注释, 可是写注释却没有任何方式可以进行约束. 这下好了, 类型就是最好的注释, 用 Typescript, 可以大大提高代码的可维护性. 一. 如何处理第三方库类型相关问题 Typescipt 所提供的第三方库类型定义不仅约束我们的输入调用, 还能为我们提供文档. 现在, NPM 上的第三方类型定义种类繁多,很难保证类型定义是正确的. 也很难保证所有使用的第三方库都有类型定义. 那么, 在这个充满未知的过程中,如何才能正确使用TypeScript中的第三方库呢? 下面列举了四种常见的无法正常工作的场景以及对应的解决方法: 库本身没有自带类型定义 库本身没有类型定义, 也没有相关的@type 类型声明库有误 类型声明报错 1. 库本身没有自带类型定义 查找不到相关的库类型.

typescript枚举,类型推论,类型兼容性,高级类型,Symbols(学习笔记非干货)

喜你入骨 提交于 2020-05-02 18:28:24
枚举部分 Enumeration part 使用枚举我们可以定义一些有名字的数字常量。 枚举通过 enum关键字来定义。 Using enumerations, we can define some numeric constants with names. Enumeration is defined by the enum keyword. enum Direction { Up = 1, Down, Left, Right } 枚举是在运行时真正存在的一个对象,其中一个原因是因为这样可以从枚举值到枚举名进行反向映射 Enumeration is an object that really exists at runtime, one of the reasons is that it maps backwards from enumeration values to enumeration names. enum Enum{ A } let a=Enum.A; let nameOfA=Enum[Enum.A];//A 引用枚举成员总会生成一次属性访问并且永远不会内联。 在大多数情况下这是很好的并且正确的解决方案。 然而有时候需求却比较严格。 Reference enumeration members always generate an attribute access