小编ero*_*3pi的帖子

如何将函数直接映射到列表列表?

我为图像构建了一个像素分类器,对于图像中的每个像素,我想定义它属于哪个预定义的颜色簇。它有效,但每张图像大约 5 分钟,我想我正在做一些肯定可以优化的非 Pythonic 的事情。

我们如何将函数直接映射到列表列表上?

#First I convert my image to a list
#Below list represents a true image size
list1=[[255, 114, 70],
[120, 89, 15],
[247, 190, 6],
[41, 38, 37],
[102, 102, 10],
[255,255,255]]*3583180
Run Code Online (Sandbox Code Playgroud)

然后我们定义了将颜色映射到的集群以及执行此操作的函数(取自PIL 库

#Define colors of interest
#Colors of interest 
RED=[255, 114, 70]
DARK_YELLOW=[120, 89, 15]
LIGHT_YELLOW=[247, 190, 6]
BLACK=[41, 38, 37]
GREY=[102, 102, 10]
WHITE=[255,255,255]

Colors=[RED, DARK_YELLOW, LIGHT_YELLOW, GREY, BLACK, WHITE]

#Function to find closes cluster by root and squareroot distance …
Run Code Online (Sandbox Code Playgroud)

python optimization performance numpy list

9
推荐指数
1
解决办法
369
查看次数

使用带有不匹配索引的 pandas .loc 时内存爆炸+分配导致重复轴错误

这是从大多数Pythonic方式将pandas单元与条件连接起来的观察\n我无法理解为什么第三个解决方案比第一个解决方案需要更多的内存。

\n
    \n
  • 如果我不采样第三个解决方案不会给出运行时错误,显然有些事情很奇怪

    \n
  • \n
  • 为了模拟大型数据帧,我尝试重新采样,但没想到会遇到这种错误

    \n
  • \n
\n

背景

\n

非常不言自明,一行,看起来Pythonic

\n
df[\'city\'] + (df[\'city\'] == \'paris\')*(\'_\' + df[\'arr\'].astype(str))\n
Run Code Online (Sandbox Code Playgroud)\n
s = """city,arr,final_target\nparis,11,paris_11\nparis,12,paris_12\ndallas,22,dallas\nmiami,15,miami\nparis,16,paris_16"""\nimport pandas as pd\nimport io\ndf = pd.read_csv(io.StringIO(s)).sample(1000000, replace=True)\ndf\n
Run Code Online (Sandbox Code Playgroud)\n

速度

\n
s = """city,arr,final_target\nparis,11,paris_11\nparis,12,paris_12\ndallas,22,dallas\nmiami,15,miami\nparis,16,paris_16"""\nimport pandas as pd\nimport io\ndf = pd.read_csv(io.StringIO(s)).sample(1000000, replace=True)\ndf\n
Run Code Online (Sandbox Code Playgroud)\n
%%timeit\ndf[\'city\'] + (df[\'city\'] == \'paris\')*(\'_\' + df[\'arr\'].astype(str))\n# 877 ms \xc2\xb1 19.2 ms per loop (mean \xc2\xb1 std. dev. of 7 runs, 1 loop each)\n
Run Code Online (Sandbox Code Playgroud)\n
如果我不采样,则不会出现错误,并且输出也完全匹配
\n

错误(已更新)(仅当我从数据帧采样时发生)

\n
%%timeit\ndf[\'final_target\'] = np.where(df[\'city\'].eq(\'paris\'), \n …
Run Code Online (Sandbox Code Playgroud)

python performance memory-management numpy pandas

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

为什么 np.hypot 和 np.subtract.outer 与普通广播相比非常快?使用 Numba 并行加速 numpy 进行距离矩阵计算

我有两组大的 2D 点,我需要计算一个距离矩阵。

我需要它在 python 中运行得很快,所以很明显我使用了 numpy。我最近了解了 numpy 广播并使用了它,而不是在 python 中循环,numpy 将在 C 中进行。

我真的认为广播就是我所需要的,直到我看到其他方法比普通广播更好,我有两种计算距离矩阵的方法,但我不明白为什么一种比另一种更好。

我在这里查找https://github.com/numpy/numpy/issues/14761并且我得到了相互矛盾的结果。

下面是两种计算距离矩阵的方法

单元格 [3, 4, 6] 和 [8, 9] 都计算距离矩阵,但 3+4 使用减法。outer 比使用 vanilla 广播的 8 快,使用 hypot 的 6 比 9 快,这很简单道路。我没有尝试在 python 循环中假设它永远不会完成。

我想知道

1. 有没有更快的方法来计算距离矩阵(可能是 scikit-learn 或 scipy)?

2.为什么hypot和subtract.outer这么快?

为了方便起见,我还附上了代码段 tp run 整个事情,并更改了种子以防止缓存恢复

### Cell 1
import numpy as np

np.random.seed(858442)

### Cell 2
%%time
obs = np.random.random((50000, 2))
interp = np.random.random((30000, 2))

CPU times: user 2.02 ms, sys: 1.4 …
Run Code Online (Sandbox Code Playgroud)

python numpy vectorization python-3.x numba

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

TorchServe MAR 每个模型多个 Python 文件

有没有办法在调用 MAR 之前将模型拆分为多个文件?

例如,如果我有文件base_model.py

import torch
from torch import nn


class BaseModel(nn.Module):
    ...
Run Code Online (Sandbox Code Playgroud)

以及继承自的模型BaseModel

from base_model import BaseModel


class FullModel(BaseModel):
    ...
Run Code Online (Sandbox Code Playgroud)

对于处理程序来说也是如此。我不知道如何在多个文件之间拆分代码。

python pytorch

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

AWS Sagemaker 推理端点未利用所有 vCPU

我在 sagemaker 推理端点(单实例)上部署了一个自定义模型,在进行负载测试时,我观察到 CPU 利用率指标达到了 100% 的最大值,但根据这篇文章,它应该达到 #vCPU*100% 的最大值。我已确认推理端点未使用 clowdwatch 日志中的所有核心。

因此,如果一个预测调用需要一秒钟处理才能给出响应,则部署的模型每秒只能处理一个 API 调用,如果使用所有 vCPU,则可能会增加到每秒 8 个调用。

AWS Sagemaker部署中是否有任何设置可以使用所有vCPU来提高并发性?

或者我们可以inference.py在部署时在文件内使用多处理 python 包,以便每次调用都到达默认核心,然后所有计算/预测都在任何其他核心中完成,无论该核心在该实例中是空的吗?

python machine-learning amazon-web-services amazon-sagemaker

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