Entry

基于TorchText的PyTorch文本分类

北城余情 提交于 2020-08-06 21:08:13
作者|DR. VAIBHAV KUMAR 编译|VK 来源|Analytics In Diamag 文本分类是自然语言处理的重要应用之一。在机器学习中有多种方法可以对文本进行分类。但是这些分类技术大多需要大量的预处理和大量的计算资源。在这篇文章中,我们使用PyTorch来进行多类文本分类,因为它有如下优点: PyTorch提供了一种强大的方法来实现复杂的模型体系结构和算法,其预处理量相对较少,计算资源(包括执行时间)的消耗也较少。 PyTorch的基本单元是张量,它具有在运行时改变架构和跨gpu分布训练的优点。 PyTorch提供了一个名为TorchText的强大库,其中包含用于预处理文本的脚本和一些流行的NLP数据集的源代码。 在本文中,我们将使用TorchText演示多类文本分类,TorchText是PyTorch中一个强大的自然语言处理库。 对于这种分类,将使用由EmbeddingBag层和线性层组成的模型。EmbeddingBag通过计算嵌入的平均值来处理长度可变的文本条目。 这个模型将在DBpedia数据集上进行训练,其中文本属于14个类。训练成功后,模型将预测输入文本的类标签。 DBpedia数据集 DBpedia是自然语言处理领域中流行的基准数据集。它包含14个类别的文本,如公司、教育机构、艺术家、电影等。 它实际上是从维基百科项目创建的信息中提取的结构化内容集

golang 打印程序的启动流程。runtime 包示例。

非 Y 不嫁゛ 提交于 2020-08-06 16:16:01
package main import ( "fmt" "runtime" ) func main() { for skip := 0; ; skip++ { pc, file, line, ok := runtime.Caller(skip) if !ok { break } p := runtime.FuncForPC(pc) fnfile, fnline := p.FileLine(0) fmt.Printf("skip = %d, pc = 0x%08X\n", skip, pc) fmt.Printf(" func: file = %s, line = L%03d, name = %s, entry = 0x%08X\n", fnfile, fnline, p.Name(), p.Entry()) fmt.Printf(" call: file = %s, line = L%03d\n", file, line) } } 打印程序的启动流程。 输出: skip = 0, pc = 0x0049324B func: file = /tmp/sandbox841664779/prog.go, line = L010, name = main.main, entry = 0x00492FC0 call: file = /tmp/sandbox841664779/prog.go,

SpringBoot 配置类解析

谁说我不能喝 提交于 2020-08-06 13:54:30
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/NvPO5-FWLiOlrsOf4wLaJA 作者: Li Wanghong SpringBoot作为Java领域非常流行的开源框架,集成了大量常用的第三方库配置,Spring Boot应用中这些第三方库几乎可以是零配置的开箱即用,大部分的 Spring Boot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。SpringBoot上手快,但是如果你的项目中业务场景需要一些特殊定制,甚至对源码进行定制化,那这时候了解原理就变成必需的了,只有充分了解源码,知道框架底层的工作原理,才能对源码中原有的机制进行修改 / 扩展等等。本文介绍了SpringBoot如何解析配置类、如何集成第三方配置。 一、基本概念介绍 在SpringBoot中推荐基于Java Config的方式来代替传统的XML方式去引入Bean,本文就是分析SpringBoot如何解析这些配置类,为容器中注入我们自定义的以及SpringBoot为我们提供的Bean。SpringBoot版本基于2.1.7.RELEASE。 // 通常一个SpringBoot工程会含有这样一个主配置类,它位于我们项目的根包下,通过启动这个main方法就可以启动我们的项目 // 下面我们先分析

文档---Groovy with Eclipse

£可爱£侵袭症+ 提交于 2020-08-06 13:20:49
Groovy. This article gives a short overview of the Groovy language including collections, loops, gstrings, MOP, closures, operator overloading, XML handing and using Groovy together with Java class. It also describes how to use the Eclipse IDE for developing Groovy. This article assumes that you have already Eclipse installed and that you have used Eclipse for Java development. This article was written using Groovy 2.4, Eclipse 4.4 (Luna) and Java 1.8. 1. Groovy 1.1. What is Groovy? Groovy is an optionally typed, dynamic language that runs on the JVM. It is tightly integrated with the Java

极客时间 Redis核心技术与实战 笔记01 基础篇

对着背影说爱祢 提交于 2020-08-06 13:16:15
01 | 基本架构:一个键值数据库包含什么? 而 Redis 支持的 value 类型包括了 String、哈希表、列表、集合等。Redis 能够在实际业务场景中得到广泛的应用,就是得益于支持多样化类型的 value。 为了和 Redis 保持一致,我们的 SimpleKV 就采用内存保存键值数据。接下来,我们来了解下 SimpleKV 的基本组件。 大体来说,一个键值数据库包括了访问框架、索引模块、操作模块和存储模块四部分(见下图)。接下来,我们就从这四个部分入手,继续构建我们的 SimpleKV 02 | 数据结构:快速的Redis有哪些慢操作? 但是,这里依然存在一个问题,哈希冲突链上的元素只能通过指针逐一查找再操作。如果哈希表里写入的数据越来越多,哈希冲突可能也会越来越多,这就会导致某些哈希冲突链过长,进而导致这个链上的元素查找耗时长,效率降低。对于追求“快”的 Redis 来说,这是不太能接受的。 所以,Redis 会对哈希表做 rehash 操作。rehash 也就是增加现有的哈希桶数量,让逐渐增多的 entry 元素能在更多的桶之间分散保存,减少单个桶中的元素数量,从而减少单个桶中的冲突。那具体怎么做呢? Redis 开始执行 rehash,这个过程分为三步: 1. 给哈希表 2 分配更大的空间,例如是当前哈希表 1 大小的两倍; 2. 把哈希表 1

快递100云平台的安全措施--API限流

谁说胖子不能爱 提交于 2020-08-06 11:51:09
2、热点参数限流 注意: 若 entry 的时候传入了热点参数,那么 exit 的时候也一定要带上对应的参数(exit(count, args)),否则可能会有统计错误。 3、通过 ParamFlowRuleManager 的 loadRules 方法更新热点参数规则 了解理多,可以搜索一下快递云100平台。 来源: oschina 链接: https://my.oschina.net/u/4584020/blog/4358807

ThreadLocal

被刻印的时光 ゝ 提交于 2020-08-06 10:16:19
ThreadLocal ① 预备知识 Java中的4种引用类型:强软弱虚 弱引用 :GC看到会直接回收;主要用于一次性使用的场合,使用完就不要了; 虚引用 :用于管理堆外内存; ② ThreadLocal ThreadLocal是每个线程自己独立拥有,线程存在,这个ThreadLocal对象就一直存在; ThreadLocal可以简单理解为是一个 容器 ,容器内可以装一堆对象; 2.1 ThreadLocal源码解读: 1 任何一个new出来的Thread线程对象,它创建了一个map(key,value); 2 new一个ThreadLocal对象,让其调用自己的set方法,就是把自己放到了上述的map中,作为key,set进来的对象作为value; tl作为map中的key,Person对象作为map中的value; 3 tl调用自己的set方法将自己放入map中;set方法内部实现:调用map.set(),set方法会设置一个<key,value>对传进去,这个key value对会被new成一个Entry(一个Entry就是map中的一行,也就是一对<key,value>),而Entry 继承了WeakReference(弱引用类); 2.2 面试题 问题一:为什么要使用弱引用让key指向ThreadLocal? 防止内存泄漏。当tl一旦没有的时候,由于key指向TL是弱引用

关于redis,你需要了解的几点!

﹥>﹥吖頭↗ 提交于 2020-08-06 08:04:33
一、关于 redis key: 1、是二进制安全的,也就是说,你可以使用任何形式的二进制序列来作为key,比如一个string,或者一个jpg图片的数据,需要说明的是,空字符串也是一个有效的key。 2、不建议使用过长的key,影响内存占用及数据查性能,对于过长的key,可以通过hash(例如SHA1)处理转换。 3、建议使用有意义及统一格式的key。 4、最大允许key大小为512M。 二、String 类型应用: 1、作为原子计数器:incr、decr、incrby 2、结合append命令,作为基于时间的增量序列。 3、随机访问及获取值区域,getrange、setrange。 附:需要注意的是append及range操作容易引起内存浪费和碎片化问题。 三、hash 类型:ziplist or hashtable 1、单个hash最多支持2 32 - 1个键值对。 2、关于hash类型的内部编码: ziplist(压缩列表) & hashtable(哈希表) 配置:hash-max-ziplist-entries(hash类型最大kv数据,默认512)、hash-max-ziplist-value(单个v值最大值, 默认64) redis 采用何种结构取决于hash中元素数及元素值得大小,当同时满足小于配置时,redis使用ziplist编码存储

java8 实现map以value值排序

人盡茶涼 提交于 2020-08-06 06:28:46
import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.stream.Collector; import java.util.stream.Collectors; import java.util.LinkedHashMap; public class MapSorted{ public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("A", 3); map.put("B", 5); map.put("C", 1); map.put("D", 1); map.put("E", 9); System.out.println(map); //如果value为java对象,则需要实现Comparable接口,重写compareTo方法 Map<String, Integer> sortedMap = new LinkedHashMap<>(); Map<String, Integer> sortedMap2 = new LinkedHashMap<>(); //ASC map.entrySet().stream() .sorted

原来Linux是这么管理内存的

穿精又带淫゛_ 提交于 2020-08-06 04:03:27
Linux 内存管理模型非常直接明了,因为 Linux 的这种机制使其具有可移植性并且能够在内存管理单元相差不大的机器下实现 Linux,下面我们就来认识一下 Linux 内存管理是如何实现的。 基本概念 每个 Linux 进程都会有地址空间,这些地址空间由三个段区域组成:text 段、data 段、stack 段。下面是进程地址空间的示例。 数据段(data segment) 包含了程序的变量、字符串、数组和其他数据的存储。数据段分为两部分,已经初始化的数据和尚未初始化的数据。其中尚未初始化的数据就是我们说的 BSS。数据段部分的初始化需要编译就期确定的常量以及程序启动就需要一个初始值的变量。所有 BSS 部分中的变量在加载后被初始化为 0 。 和 代码段(Text segment) 不一样,data segment 数据段可以改变。程序总是修改它的变量。而且,许多程序需要在执行时动态分配空间。Linux 允许数据段随着内存的分配和回收从而增大或者减小。为了分配内存,程序可以增加数据段的大小。在 C 语言中有一套标准库 malloc 经常用于分配内存。进程地址空间描述符包含动态分配的内存区域称为 堆(heap)。 第三部分段是 栈段(stack segment)。在大部分机器上,栈段会在虚拟内存地址顶部地址位置处,并向低位置处(向地址空间为 0 处)拓展。举个例子来说,在 32