我无法理解PyTorch 文档中的示例如何对应于解释:
返回一个新的张量,其尺寸为 1,插入到指定位置。[...]
Run Code Online (Sandbox Code Playgroud)>>> 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]])
双方.flatten()
并.view(-1)
压平PyTorch张量。有什么不同?
.flatten()
复制张量的数据?.view(-1)
更快吗?.flatten()
没有不工作的情况?假设我有不同的设置(它们必须不同,我不能按照我正在使用的数据类型加入它们):
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
将会动态创建.
我使用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) 当我在PyTorch分布样,都sample
和rsample
似乎给了类似的结果:
import torch, seaborn as sns
x = torch.distributions.Normal(torch.tensor([0.0]), torch.tensor([1.0]))
Run Code Online (Sandbox Code Playgroud)
什么时候用sample()
,什么时候用rsample()
?
我想知道 TensorFlow 是否有等效的 PyTorch 损失函数softmax_cross_entropy_with_logits
?
据我所知,a luigi.Target
既可以存在,也可以不存在.因此,如果luigi.Target
存在,则不会重新计算.
我正在寻找一种方法来强制重新计算任务,如果其中一个依赖项被修改,或者其中一个任务的代码发生了变化.
我发誓我前段时间在某处看到过这个讨论,但我再也找不到这个了。
想象一下我有这个方法:
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 何时决定从内存中“删除”东西,只是要求它收集东西......我似乎从来没有任何结论性的结果。
我有一个熊猫数据帧:
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 具有标准化值的新列包含一些NaN
s:
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) 该model.eval()
方法修改了某些在训练和推理过程中需要表现不同的模块(层)。文档中列出了一些示例:
这仅对某些模块有影响。请参阅特定模块的文档,了解其在培训/评估模式下的行为详细信息(如果它们受到影响),例如
Dropout
、BatchNorm
等。
是否有受影响模块的详尽列表?