小编Jef*_*eff的帖子

在scala中以恒定时间连接列表?

在Scala中,是否有内置函数或外部库用于在常量时间内连接两个列表(或数组,向量或列表缓冲区等)?这样的操作可能会破坏/改变两个原始列表.据我所知,我看到的用于连接列表的所有函数都以线性时间运行.

非常感谢.

scala list concatenation data-structures

11
推荐指数
1
解决办法
2299
查看次数

人名的拼写更正(Python)

我有很多人名(例如"john smith").我想通过名字查找人物.但是,有些查询会拼写错误(例如"jon smth","johnsm ith").是否有任何包含Python绑定的拼写修正库可能会为我找到经过拼写纠正的匹配?

我知道Whoosh和Python-aspell.Whoosh的拼写纠正对我来说并不适用,因为它将正确拼写的集合写入磁盘而不是将其存储在内存中.这使得我的应用程序查找速度太慢.由于代码的结构如何,改变这种行为似乎并不容易.另外,飞快移动不会对不同的角色编辑加权不同,即使"y"更可能与"i"("jim kazinsky" - >"jim kazinski")混淆,而不是'z' .

Aspell与人名不兼容,因为名字通常包含空格--Aspell认为这个词是纠正的基本单位.另外,据我所知,Aspell使用n-gram拼写校正模型,而不是字符编辑距离模型.虽然n-gram模型对于字典词是有意义的,但它对名称不起作用:人们"bob ruzatoxg"和"joe ruzatoxg"有很多共同的罕见三元组,因为它们具有相同的罕见姓氏.但他们显然是不同的人.

我还要提一下,我不能只将每个查询与集合中的所有条目进行比较 - 这太慢了.某些索引需要预先构建.

谢谢!

python nlp spell-checking nltk whoosh

10
推荐指数
1
解决办法
2015
查看次数

计算1行代码中向量中每个唯一整数的实例?

是否有一种灵活的方式来重写这个Julia函数,可能只使用一行代码,而不是让它慢得多?(我刚刚开始使用Julia.这很棒!)K是一个正整数,zd是一个正整数的向量,不大于K.谢谢!

function tally(zd)
    ret = zeros(Int64, K)
    for k in zd
        ret[k] += 1
    end
    return ret 
end
Run Code Online (Sandbox Code Playgroud)

例:

julia> K = 5
julia> zd = [1,2,2,2,2,3];
julia> tally(zd)
5-element Array{Float64,1}:
 1
 4
 1
 0
 0
Run Code Online (Sandbox Code Playgroud)

julia

7
推荐指数
5
解决办法
5743
查看次数

为什么这个开发出来的Julia代码超过20倍太慢了?

我认为在Julia中(与R或Matlab不同),devectorized代码通常比矢量化代码更快.但我发现情况并非如此.这是一个例子:

julia> x = Float64[1:10000000];

julia> y = Array(Float64, length(x));

julia> @time for i = 1:length(x) y[i] = exp(x[i]) end;
elapsed time: 7.014107314 seconds (959983704 bytes allocated, 25.39% gc time)

julia> @time y = exp(x);
elapsed time: 0.364695612 seconds (80000128 bytes allocated)
Run Code Online (Sandbox Code Playgroud)

为什么矢量化代码要快得多?看起来像devectorized代码分配的内存超过10倍.但实际上只需要分配几个字节来取幂任意数量的浮点数.有没有办法编写devectorized代码,以便它不分配如此多的内存,因此比矢量化代码运行得更快?

谢谢!

julia

7
推荐指数
1
解决办法
955
查看次数

在Julia中,宏可以访问其参数的推断类型吗?

在Julia中,有没有办法编写一个基于其参数的(编译时)类型进行分支的宏,至少对于可以在编译时推断其类型的参数?就像,在下面的例子中,我code_type编写了一个名为的函数,它返回编译时类型x.有没有这样的功能,或产生这种行为的任何方式?(或者在推断出类型之前,宏会扩展,这样就不可能做到这一点.)

macro report_int(x)
  code_type(x) == Int64 ? "it's an int" : "not an int"
end
Run Code Online (Sandbox Code Playgroud)

julia

6
推荐指数
2
解决办法
226
查看次数

在 Pytorch 中裁剪一小批图像——每个图像都不同

我有一个input尺寸为 64x21x21 的张量。它是 64 个图像的小批量,每个图像 21x21 像素。我想将每个图像裁剪为 11x11 像素。所以我想要的输出张量的尺寸为 64x11x11。

我想围绕不同的“中心像素”裁剪每个图像。中心像素由尺寸为 64x2 的二维长张量给出center。对于图像 i,给出应位于输出中心的像素的center[i][0]行索引和列索引。center[i][1]我们可以假设中心像素总是距离边界至少 5 个像素。

有没有一种有效的方法可以在 pytorch(在 GPU 上)中执行此操作?

更新:让我澄清一下,center张量是由深度神经网络形成的。用强化学习术语来说,它充当“硬注意力机制”。“裁剪”图像后,该子图像将成为另一个神经网络的输入。这就是为什么我想在Pytorch中进行裁剪:因为裁剪前后的操作都是在Pytorch中进行的。我想避免将任何内容从 GPU 传输回 CPU。

pytorch

6
推荐指数
1
解决办法
6190
查看次数

web使用python抓取动态内容

我想使用Python刮的内容"是你寻找这些作者:"网页上的箱子像这样的:http://academic.research.microsoft.com/Search?query=lander

不幸的是,该框的内容由JavaScript动态加载.通常在这种情况下,我可以阅读Javascript来弄清楚发生了什么,或者我可以使用像Firebug这样的浏览器扩展来确定动态内容的来源.这次没有这样的运气...... Javascript非常复杂,Firebug没有提供很多关于如何获取内容的线索.

有什么技巧可以让这项任务变得简单吗?

python screen-scraping web-scraping

4
推荐指数
1
解决办法
2万
查看次数

在复合类型中添加所有数组的高效且简洁的方法?

我想出了两种方法来在一对复合类型中添加所有数组.第一种方式(add_structs_1)需要4秒才能运行,第二种方式(add_structs_2)需要0.15秒.但第二种方法需要更多代码......我必须明确提到复合类型中的每个字段.有没有办法在add_structs_2不明确列出每个字段的情况下获得效率?

type SampleStruct
    a::Vector{Float64}
    k::Matrix{Float64}
    e_axis::Vector{Float64}
    e_dev::Vector{Float64}
    e_scale::Vector{Float64}
end

function add_structs_1(tgt::SampleStruct, src::SampleStruct)
    for n in names(SampleStruct)
        for i in 1:length(tgt.(n))
            tgt.(n)[i] += src.(n)[i]
        end
    end
end

function add_structs_2(tgt::SampleStruct, src::SampleStruct)
    for i in 1:length(tgt.a)
        tgt.a[i] += src.a[i]
    end

    for i in 1:length(tgt.k)
        tgt.k[i] += src.k[i]
    end

    for i in 1:length(tgt.e_axis)
        tgt.e_axis[i] += src.e_axis[i]
    end

    for i in 1:length(tgt.e_dev)
        tgt.e_dev[i] += src.e_dev[i]
    end

    for i in 1:length(tgt.e_scale)
        tgt.e_scale[i] += src.e_scale[i]
    end
end

function time_add_structs(f::Function)
    src = …
Run Code Online (Sandbox Code Playgroud)

julia

2
推荐指数
1
解决办法
150
查看次数

Python中的多处理与只读共享内存?

我有一个单线程Python程序,我想修改它以使用它运行的服务器上的所有32个处理器.正如我所设想的那样,每个工作进程都会从队列中接收其作业并将其输出提交到队列.但是,要完成其工作,每个工作进程都需要只读访问复杂的内存中数据结构 - 许多千兆字节的dicts和彼此链接的对象.在python中,有没有一种简单的方法来共享这个数据结构,而不为每个工作进程复制它?

谢谢.

python multithreading shared-memory multiprocessing

0
推荐指数
1
解决办法
3336
查看次数