小编Ast*_*iul的帖子

为什么Tensorflow和Scipy之间的Pearson相关性不同

我用两种方式计算Pearson相关性:


在Tensorflow中,我使用以下指标:

tf.contrib.metrics.streaming_pearson_correlation(y_pred, y_true)
Run Code Online (Sandbox Code Playgroud)

当我在测试数据上评估我的网络时,得到了以下结果:

损失= 0.5289223349094391

pearson = 0.3701728057861328

(损失是mean_squared_error)


然后我预测测试数据并使用Scipy计算相同的指标:

import scipy.stats as measures
per_coef = measures.pearsonr(y_pred, y_true)[0]
mse_coef = np.mean(np.square(np.array(y_pred) - np.array(y_true)))
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

Pearson = 0.5715300096509959

MSE = 0.5289223312665985


这是一个已知的问题吗?这是正常的吗?

最小,完整和可验证的例子

import tensorflow as tf
import scipy.stats as measures

y_pred = [2, 2, 3, 4, 5, 5, 4, 2]
y_true = [1, 2, 3, 4, 5, 6, 7, 8]

## Scipy
val2 = measures.pearsonr(y_pred, y_true)[0]
print("Scipy's Pearson = {}".format(val2))

## Tensorflow
logits = tf.placeholder(tf.float32, [8]) …
Run Code Online (Sandbox Code Playgroud)

python metrics scipy python-3.x tensorflow

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

如何修改 Torch Hub 模型的下载路径

当我通过 Torch Hub 下载模型时,模型会自动以/home/me/.cache/torch.

如何修改此行为?

path pytorch

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

使用 Pytorch 在同一 GPU 上的进程之间共享 GPU 内存

我正在尝试实现一种在 Pytorch 中进行并发推理的有效方法。

现在,我在 GPU 上启动了 2 个进程(我只有 1 个 GPU,两个进程都在同一设备上)。每个进程加载我的 Pytorch 模型并执行推理步骤。

我的问题是我的模型占用了相当多的内存空间。我在 GPU 上有 12Gb 的内存,该模型仅需要大约 3Gb 的内存(没有数据)。这意味着我的 2 个进程总共需要 6Gb 的内存用于模型。


现在我想知道是否可以只加载一次模型,并使用这个模型对 2 个不同的进程进行推理。我想要的是模型只消耗了 3Gb 的内存,但仍然有 2 个进程。


我遇到了这个提到 IPC 的答案,但据我所知,这意味着进程 #2 将从进程 #1 复制模型,所以我最终仍会为模型分配 6Gb。

我还检查了 Pytorch 文档,关于 DataParallel 和 DistributedDataParallel,但似乎不可能。

似乎是我想要的,但我找不到任何关于如何在推理模式下与 Pytorch 一起使用的代码示例。


我知道这可能很难为训练做这样的事情,但请注意我只是在谈论推理步骤(模型处于只读模式,不需要更新梯度)。有了这个假设,我不确定这是否可能。

python gpu inference pytorch

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

Python Google Translate API错误:如何转换大量数据

我的问题

我想对NLP使用一种由反向翻译数据集组成的数据增强方法。

基本上,我有一个大型数据集(SNLI),包含1100万个英语句子。我需要做的是:用一种语言翻译这些句子,然后将其翻译回英语。

我可能需要几种语言才能做到这一点。所以我要做很多翻译。

我需要一个免费的解决方案。


我到目前为止所做的

我尝试了几种python模块进行翻译,但是由于Google Translate API的最新更改,大多数都不起作用。如果应用此解决方案,googletrans似乎可以正常工作。

但是,它不适用于大型数据集。Google的字符数上限为15,000个(如thisthisthis所指出)。第一个链接显示了一个可能的解决方法。


我被封锁的地方

即使我采用了变通方法(每次迭代都初始化Translator),也无法正常工作,并且出现了以下错误:

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Run Code Online (Sandbox Code Playgroud)

我尝试使用代理和其他Google翻译URL:

URLS = ['translate.google.com', 'translate.google.co.kr', 'translate.google.ac', 'translate.google.ad', 'translate.google.ae', ...]

proxies = {    'http': '1.243.64.63:48730',   'https': '59.11.98.253:42645', }

t = Translator(service_urls=URLS, proxies=proxies)
Run Code Online (Sandbox Code Playgroud)

但这并没有改变任何东西。


注意

我的问题可能来自我使用多线程的事实:100个工作人员用于转换整个数据集。如果它们并行工作,也许它们一起使用超过15k个字符。

但是我应该使用多线程。如果没有,翻译整个数据集将需要几周的时间...


我的问题

如何解决此错误,以便翻译所有句子?

如果不可能的话,对于这么大的数据集是否有免费的替代方法可以使用Python获得机器翻译(不是必须使用Google Translate)?

python translation google-translate dataset data-augmentation

5
推荐指数
1
解决办法
1171
查看次数

如何在 Tensorflow 中计算 Spearman 相关性

问题

我需要计算 Pearson 和 Spearman 相关性,并将其用作 tensorflow 中的指标。

对于皮尔逊来说,这很简单:

tf.contrib.metrics.streaming_pearson_correlation(y_pred, y_true)
Run Code Online (Sandbox Code Playgroud)

但对于斯皮尔曼,我一无所知!

我试过的:

这个答案

    samples = 1
    predictions_rank = tf.nn.top_k(y_pred, k=samples, sorted=True, name='prediction_rank').indices
    real_rank = tf.nn.top_k(y_true, k=samples, sorted=True, name='real_rank').indices
    rank_diffs = predictions_rank - real_rank
    rank_diffs_squared_sum = tf.reduce_sum(rank_diffs * rank_diffs)
    six = tf.constant(6)
    one = tf.constant(1.0)
    numerator = tf.cast(six * rank_diffs_squared_sum, dtype=tf.float32)
    divider = tf.cast(samples * samples * samples - samples, dtype=tf.float32)
    spearman_batch = one - numerator / divider
Run Code Online (Sandbox Code Playgroud)

但这回NaN...


遵循维基百科定义在此处输入图片说明

我试过 : …

python metrics python-3.x tensorflow

5
推荐指数
1
解决办法
1579
查看次数

Tensorflow Hub:导入模型时卡住

尝试使用Tensorflow Hub使用以下代码导入一些模型:

import tensorflow as tf
import tensorflow_hub as hub

elmo_model = hub.Module('https://tfhub.dev/google/elmo/2', trainable=True)
Run Code Online (Sandbox Code Playgroud)

使我的笔记本卡住了。卡住之前出现的唯一日志行是:

INFO:tensorflow:使用/ tmp / tfhub_modules缓存模块。

如何取消粘贴并允许我从Tensorflow Hub导入模型?

python tensorflow jupyter-notebook tensorflow-hub

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

Visual Studio Code 和 git:X 权限被拒绝

我有 2 个 github 帐户 X(专业帐户)和 Y(个人帐户)。

在我的个人计算机上,我使用了这两个帐户和 Visual Code。

但现在,当我尝试将一些更改推送到我的存储库时,我收到一条消息:

X 拒绝对 Y/repo.git 的权限。


这是与此重复的,但那里的答案对我不起作用。

我试过 :

git config --global user.email "email@example.com"

没用。我尝试不使用--global,但没有成功。

我也看到了这个答案,但我不知道如何“取消黑名单”文件。无论如何,我什至找不到我的.gitconfig


我失去了耐心和希望,如果有人有解决方案,我将非常感谢分享!

git permissions settings github visual-studio-code

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