小编uke*_*emi的帖子

在 Pytorch 中“unsqueeze”有什么作用?

我无法理解PyTorch 文档中的示例如何对应于解释:

返回一个新的张量,其尺寸为 1,插入到指定位置。[...]

>>> x = torch.tensor([1, 2, 3, 4])
>>> torch.unsqueeze(x, 0)
tensor([[ 1,  2,  3,  4]])
>>> torch.unsqueeze(x, 1)
tensor([[ 1],
        [ 2],
        [ 3],
        [ 4]])
Run Code Online (Sandbox Code Playgroud)

python torch pytorch

71
推荐指数
5
解决办法
6万
查看次数

PyTorch 中的 .flatten() 和 .view(-1) 有什么区别?

双方.flatten().view(-1)压平PyTorch张量。有什么不同?

  1. 是否.flatten()复制张量的数据?
  2. .view(-1)更快吗?
  3. .flatten()没有不工作的情况?

python pytorch

19
推荐指数
2
解决办法
7204
查看次数

如何检查任何给定集合中是否存在值

假设我有不同的设置(它们必须不同,我不能按照我正在使用的数据类型加入它们):

r = set([1,2,3])
s = set([4,5,6])
t = set([7,8,9])
Run Code Online (Sandbox Code Playgroud)

检查给定变量是否存在于其中的最佳方法是什么?

我在用:

if myvar in r \
   or myvar in s \
   or myvar in t:
Run Code Online (Sandbox Code Playgroud)

但我想知道是否可以通过使用set诸如此类的属性以某种方式减少这种情况union.

以下工作,但我找不到定义多个联合的方法:

if myvar in r.union(s)
   or myvar in t:
Run Code Online (Sandbox Code Playgroud)

我也想知道这个联盟是否会以某种方式影响性能,因为我猜一个临时set将会动态创建.

python set

16
推荐指数
3
解决办法
3612
查看次数

Pytorch“NCCL 错误”:未处理的系统错误,NCCL 版本 2.4.8”

我使用pytorch分布式训练我的模型。我有两个节点和每个节点两个gpu,我为一个节点运行代码:

python train_net.py  --config-file configs/InstanceSegmentation/pointrend_rcnn_R_50_FPN_1x_coco.yaml  --num-gpu 2  --num-machines 2 --machine-rank 0 --dist-url tcp://192.168.**.***:8000
Run Code Online (Sandbox Code Playgroud)

和另一个:

python train_net.py  --config-file configs/InstanceSegmentation/pointrend_rcnn_R_50_FPN_1x_coco.yaml  --num-gpu 2  --num-machines 2 --machine-rank 1 --dist-url tcp://192.168.**.***:8000
Run Code Online (Sandbox Code Playgroud)

但是另一个有 RuntimeError 问题

global_rank 3 machine_rank 1 num_gpus_per_machine 2 local_rank 1
global_rank 2 machine_rank 1 num_gpus_per_machine 2 local_rank 0
Traceback (most recent call last):
  File "train_net.py", line 109, in <module>
    args=(args,),
  File "/root/detectron2_repo/detectron2/engine/launch.py", line 49, in launch
    daemon=False,
  File "/root/anaconda3/envs/PointRend/lib/python3.6/site-packages/torch/multiprocessing/spawn.py", line 171, in spawn
    while not spawn_context.join():
  File "/root/anaconda3/envs/PointRend/lib/python3.6/site-packages/torch/multiprocessing/spawn.py", line 118, in join
    raise …
Run Code Online (Sandbox Code Playgroud)

python pytorch

16
推荐指数
1
解决办法
5848
查看次数

sample() 和 rsample() 有什么区别?

当我在PyTorch分布样,都samplersample似乎给了类似的结果:

import torch, seaborn as sns

x = torch.distributions.Normal(torch.tensor([0.0]), torch.tensor([1.0]))
Run Code Online (Sandbox Code Playgroud)
在此处输入图片说明 在此处输入图片说明
sns.distplot(x.sample((100000,))) sns.distplot(x.rsample((100000,)))

什么时候用sample(),什么时候用rsample()

python random pytorch

15
推荐指数
2
解决办法
4479
查看次数

softmax_cross_entropy_with_logits 的 PyTorch 等价

我想知道 TensorFlow 是否有等效的 PyTorch 损失函数softmax_cross_entropy_with_logits

tensorflow cross-entropy pytorch

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

当任务依赖关系变得过时时,luigi可以重新运行任务吗?

据我所知,a luigi.Target既可以存在,也可以不存在.因此,如果luigi.Target存在,则不会重新计算.

我正在寻找一种方法来强制重新计算任务,如果其中一个依赖项被修改,或者其中一个任务的代码发生了变化.

python luigi

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

Pandas DataFrame 切片与副本:哪一个对内存更友好?

我发誓我前段时间在某处看到过这个讨论,但我再也找不到这个了。

想象一下我有这个方法:

def my_method():
    df = pd.DataFrame({'val': np.random.randint(0, 1000, 1000000)})
    return df[df['val'] == 1]
Run Code Online (Sandbox Code Playgroud)

自从我决定不这样做以来已经有一段时间了,因为该方法可能会返回一个视图(这不是确定的,取决于 pandas 想要做什么)而不是一个新的数据帧。

我读到的问题是,如果返回一个视图,原始数据帧中的引用计数不会减少,因为即使我们只使用了一小部分数据,它仍在引用旧数据帧。

我被建议改为执行以下操作:

def my_method():
    df = pd.DataFrame({'val': np.random.randint(0, 1000, 1000000)})
    return df.drop(df[df["val"] != 1].index)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,drop 方法仅使用我们想要保留的数据创建一个新的数据帧,一旦该方法完成,原始数据帧中的引用计数将被设置为零,使其容易受到垃圾收集并最终释放内存。

总而言之,这将更加内存友好,并且还将确保该方法的结果是一个数据帧,而不是一个数据帧的视图,这会导致settingOnCopyWarning我们都喜欢。

这仍然是真的吗?或者是我在某处误读了什么?我试图检查这是否对内存使用有一些好处,但考虑到我无法控制 gc 何时决定从内存中“删除”东西,只是要求它收集东西......我似乎从来没有任何结论性的结果。

python dataframe pandas

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

将值的 StandardScaler() 作为新列添加到 DataFrame 会返回部分 NaN

我有一个熊猫数据帧:

df['total_price'].describe()
Run Code Online (Sandbox Code Playgroud)

返回

count    24895.000000
mean       216.377369
std        161.246931
min          0.000000
25%        109.900000
50%        174.000000
75%        273.000000
max       1355.900000
Name: total_price, dtype: float64
Run Code Online (Sandbox Code Playgroud)

当我申请preprocessing.StandardScaler()时:

x = df[['total_price']]
standard_scaler = preprocessing.StandardScaler()
x_scaled = standard_scaler.fit_transform(x)
df['new_col'] = pd.DataFrame(x_scaled)   
Run Code Online (Sandbox Code Playgroud)

<y 具有标准化值的新列包含一些NaNs:

df[['total_price', 'new_col']].head()

    total_price new_col
0   241.95      0.158596
1   241.95      0.158596
2   241.95      0.158596
3   81.95      -0.833691
4   81.95      -0.833691

df[['total_price', 'new_col']].tail()

        total_price new_col
28167   264.0       NaN
28168   264.0       NaN
28176   94.0        NaN
28177   166.0       NaN
28178   166.0       NaN …
Run Code Online (Sandbox Code Playgroud)

python nan pandas scikit-learn

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

哪些 PyTorch 模块受 model.eval() 和 model.train() 影响?

model.eval()方法修改了某些在训练和推理过程中需要表现不同的模块(层)。文档中列出了一些示例:

这仅对某些模块有影响。请参阅特定模块的文档,了解其在培训/评估模式下的行为详细信息(如果它们受到影响),例如DropoutBatchNorm等。

是否有受影响模块的详尽列表?

python machine-learning pytorch batch-normalization dropout

9
推荐指数
2
解决办法
5702
查看次数