小编Bra*_*roy的帖子

gensim 的 word2vec 中的层大小

当我开始训练我的 word2vec 模型时,我看到了警告

考虑将层大小设置为 4 的倍数以获得更好的性能

这听起来很不错,但我layer文档中找不到任何对论点或类似内容的引用。

那么如何增加图层大小,以及如何确定一个好的值呢?

python nlp python-3.x gensim word2vec

3
推荐指数
1
解决办法
1195
查看次数

word2vec的RNN模型(GRU)回归不学习

我正在将Keras代码转换为PyTorch,因为我比后者更熟悉后者.但是,我发现它不是学习(或者只是勉强).

下面我提供了几乎所有的PyTorch代码,包括初始化代码,以便您可以自己尝试.你需要自己提供的唯一一件事就是嵌入这个词(我相信你可以在网上找到很多word2vec模型).第一个输入文件应该是带有标记文本的文件,第二个输入文件应该是一个带有浮点数的文件,每行一个.因为我提供了所有代码,所以这个问题可能看起来庞大而且过于宽泛.但是,我的问题是具体的,我认为:我的模型或训练循环中的错误导致我的模型没有或几乎没有改善.(见下面的结果.)

我试图在适用情况下提供了很多意见,我所提供的形状变换以及因此您不必运行代码,看看是怎么回事.数据准备方法对于检查并不重要.

最重要的部分是前进方法RegressorNet和训练循环RegressionNN(诚​​然,这些名称被严格选择).我认为错误在某处.

from pathlib import Path
import time

import numpy as np
import torch
from torch import nn, optim
from torch.utils.data import DataLoader
import gensim

from scipy.stats import pearsonr

from LazyTextDataset import LazyTextDataset


class RegressorNet(nn.Module):
    def __init__(self, hidden_dim, embeddings=None, drop_prob=0.0):
        super(RegressorNet, self).__init__()
        self.hidden_dim = hidden_dim
        self.drop_prob = drop_prob

        # Load pretrained w2v model, but freeze it: don't retrain it.
        self.word_embeddings = nn.Embedding.from_pretrained(embeddings)
        self.word_embeddings.weight.requires_grad = False
        self.w2v_rnode = nn.GRU(embeddings.size(1), hidden_dim, bidirectional=True, dropout=drop_prob)

        self.dropout …
Run Code Online (Sandbox Code Playgroud)

python machine-learning keras tensorflow pytorch

3
推荐指数
1
解决办法
527
查看次数

在 Pytorch 中优化具有多任务目标的神经网络

在深度学习中,您通常有一个希望优化的目标(例如图像识别)。然而,在我的领域(自然语言处理),我们看到了多任务训练的兴起。例如,在单个系统中的下一个句子预测和句子分类。

我了解如何构建前向传递,例如分类任务(obj1)和回归任务(obj2)

class Net(nn.Module):
    def __init__():
        super().__init__()
        self.linear = Linear(300, 200)
        self.obj1 = Linear(200, 5)
        self.obj2 = Linear(200, 1)

    def forward(inputs):
        out = self.linear(inputs)
        out_obj1 = self.obj1(out)
        out_obj2 = self.obj2(out)
        return out_obj1, out_obj2
Run Code Online (Sandbox Code Playgroud)

但问题就变成了,如何优化这一点。您是否分别对这两个损失进行向后传递?或者将它们减少为单一损失(例如总和、平均值)?是否有一种通常用于多任务学习的方法?

为了跟进这一点,也许有人甚至会认为不同层的参数需要不同的优化器。在这种情况下,我认为损失必须单独处理。

python deep-learning pytorch

3
推荐指数
1
解决办法
5846
查看次数

使用 Stanza 和 CoreNLPClient 提取名词短语

我正在尝试使用 Stanza(使用斯坦福 CoreNLP)从句子中提取名词短语。这只能通过 Stanza 中的 CoreNLPClient 模块来完成。

# Import client module
from stanza.server import CoreNLPClient
# Construct a CoreNLPClient with some basic annotators, a memory allocation of 4GB, and port number 9001
client = CoreNLPClient(annotators=['tokenize','ssplit','pos','lemma','ner', 'parse'], memory='4G', endpoint='http://localhost:9001')
Run Code Online (Sandbox Code Playgroud)

这是一个句子的例子,我正在使用tregrex客户端中的函数来获取所有名词短语。Tregex函数dict of dicts在python中返回a 。因此,我需要先处理 的输出,tregrex然后再将其传递给Tree.fromstringNLTK 中的函数,以将名词短语正确提取为字符串。

pattern = 'NP'
text = "Albert Einstein was a German-born theoretical physicist. He developed the theory of relativity."
matches = client.tregrex(text, pattern) ``
Run Code Online (Sandbox Code Playgroud)

因此,我想出了一种方法stanza_phrases,它必须循​​环遍历NLTK …

python nlp stanford-nlp stanford-stanza

3
推荐指数
1
解决办法
1129
查看次数

站点镜像有哪些优缺点

问题1:

镜像站点时,其各自服务器的内容将同步(可能是自动(实时镜像)或手动). 这是真的?所有服务器是否相同,或主服务器是否存在?然后将其更改发送到其他"子服务器"?所以所有更改都必须在主服务器上进行,并且子服务器不允许更改?

问题2:

预期优势:

  • 全球优势:当最初在美国托管的网站被镜像到伦敦的服务器时,欧洲人将从中受益.它们具有更好的响应时间,并且由于下载器的数量减少为两个(美国和欧洲服务器),因此它们的下载速度可以更高.
  • 安全性:当一台服务器崩溃或被黑客攻击时,另一台服务器可以继续正常运行.

预期的缺点:

  • 如果未使用实时镜像,则某些用户将不得不等待更新的内容.
  • 更多的服务器等于更高的维护成本.

还有哪些其他项可以添加到这些列表中?

webserver mirroring

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

更改已设置的变量的值

这可能真的是一个非常基本的问题,但我已经尝试了几件事,但似乎没有用.

我有这个var:

w = $("#el").width();
Run Code Online (Sandbox Code Playgroud)

我想通过var改变#el宽度.所以设置宽度,使用var 而不重用整体.我怎么做?我已经尝试过以下方法:w$("#el").width()

w = 50;
w == 50;
w = "50px";
w == "50px";
Run Code Online (Sandbox Code Playgroud)

但这些似乎不起作用.

所以我想w在函数中使用来设置#el宽度.所以我不想使用,$("#el").width()因为我会使用它很多.我需要使用那个var.

variables jquery

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

Enquire.js-加载时发生不匹配事件

看到这个小提琴

enquire.register("screen and (max-width: 640px)", {
    match: function () {
        $("body").css("background","red");
    },
    unmatch: function () {
        $("body").css("background","blue");
    }
});
Run Code Online (Sandbox Code Playgroud)

当浏览器窗口加载的像素小于等于640px时,背景颜色将设置为红色。(即匹配事件被调用)。但是,当窗口在加载时宽于640px时,什么也不会发生,即不调用unmatch事件。为什么不?如果与条件不匹配,是否有办法强制取消匹配事件?

基本上,我想要的是查询的行为就像一个if-else语句,被立即调用。

jquery media-queries enquire.js

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

CSS相对定位比JS定位快吗?

我想知道 JS 在确定某些值时是否比 CSS 慢,因为它们都必须进行相同的计算。

换句话说,如果我%为一个元素设置边距,它将使用其父元素的宽度作为基础。例如,margin: 50% = margin: 0.5 * parent.width。那么,在内部,浏览器必须根据父级的宽度计算正确的边距,对吧那么,这和 JS 中的计算有什么不同呢?为什么 CSS 更快?什么内部 CSS 渲染使这些计算过程比 JS 更快?

这是一把小提琴。两个子 div 是相同的,但一个 div 的边距在 CSS ( ) 中计算margin: 20%,另一个在 JS 中计算:

var $cont = $("#container");
$("#js").css("margin", $cont.width() * 0.2);
Run Code Online (Sandbox Code Playgroud)

考虑调整大小:CSS 引擎在调整大小时也必须重新计算边距,对吗?

考虑加载时间:我只是谈论实际的执行时间。换句话说:

var $cont = $("#container");
    $("#js").css("margin", $cont.width() * 0.2);
Run Code Online (Sandbox Code Playgroud)

#css {margin: 20%;}
Run Code Online (Sandbox Code Playgroud)

不包括任何额外的(库)加载时间。jQuery 和 vanilla JS 之间的区别不应该包含在答案中。我知道两者之间的性能差异。

javascript css performance

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

为什么我可以在定义之前调用一个函数,只有一个警告?

在其他语言中,我经常这样做:

someFunc()

someFunc() {
  // This is my function
}
Run Code Online (Sandbox Code Playgroud)

这样我可以将所有函数堆叠在文件中较低的位置,但是将函数调用放在顶部.现在我对所发生的一切都有一个很好的概述.

但是,当我在Spyder的Python 3中执行此操作时,我收到了未定义名称:'myfunc'的警告

my_func("Some string")

def my_func(some_var):
  print(some_var)
Run Code Online (Sandbox Code Playgroud)

代码工作正常,但我不确定这里的最佳做法.我的方法是否会产生任何负面影响?或者它只是在你打电话之前拥有你的功能的指南?

我上面设置的代码不会为我工作.这是为什么?我正在使用Anaconda运行Python 3.4.3.我的版本有什么不同?或者是因为我在Spyder中运行它?

编辑:显然Spyder以神秘的方式工作.首先,我在定义后进行了调用,然后我将调用交换到第一行,它仍然有效.Spyder似乎缓存了功能,或者至少没有将它们清除掉.(虽然我不确定Spyder是否正在进行缓存或Python本身.我正在考虑使用Python.)对于任何想知道这一点的新手:解决方案是重新启动程序和/或Python服务.

python function spyder

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

是否可以仅为部分脚本禁用错误报告?

PHP文档读取(强调我的):

error_reporting()函数在运行时设置error_reporting指令.PHP有许多级别的错误,使用此函数设置脚本持续时间(运行时)的级别.如果未设置可选级别,则error_reporting()将仅返回当前错误报告级别.

这是否意味着错误报告的级别只能在PHP脚本中设置一次,之后不会更改?例如,是否可以这样做:

error_reporting(0);

try {
  errorSilently();
} catch (Exception $e) {
  // Do nothing
}

error_reporting(E_ALL);

try {
  errorLOUDLY();
} catch (Exception $e) {
  // Do nothing
}
Run Code Online (Sandbox Code Playgroud)

请注意,我写了一个// Do nothing因为看起来如果抛出错误,Apache会以error_log任何方式将其写入,如果它被捕获或未被捕获.我想要做的是禁用该行为,而不是写入错误日志.

php error-handling error-logging

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