小编RDl*_*ady的帖子

给定参数数量,如何估计 pytorch 模型所需的 VRAM?

我正在尝试估计完全连接的模型所需的 VRAM,而无需在 pytorch 中构建/训练模型。

我非常接近这个公式:

# params = number of parameters
# 1 MiB = 1048576 bytes
estimate = params * 24 / 1048576
Run Code Online (Sandbox Code Playgroud)

这个示例模型有 384048000 个参数,但我已经在具有不同参数大小的不同模型上进行了测试。

结果非常准确。但是,该估计仅考虑 pytorch 会话 VRAM,而不考虑驱动程序/cuda 缓冲区 VRAM 量。以下是估计值(使用公式)与经验结果(在构建/训练模型后使用 nvidia-smi)

ESTIMATE BEFORE EMPIRICAL TEST: 
VRAM estimate = 8790.1611328125MiB

EMPIRICAL RESULT AFTER BUILDING MODEL: 
GPU RAM for pytorch session only (cutorch.max_memory_reserved(0)/1048576): 8466.0MiB
GPU RAM including extra driver buffer from nvidia-smi: 9719MiB
Run Code Online (Sandbox Code Playgroud)

关于如何估计 nvidia-smi 输出中显示的额外 VRAM 有什么想法吗?

memory vram pytorch nvidia-smi

8
推荐指数
0
解决办法
2991
查看次数

如何通过节点或叶子中的标签折叠系统发育树中的分支?

我为一个蛋白质家族构建了一个系统发育树,可以将其分成不同的组,按照受体类型或反应类型对每个蛋白质进行分类.树中的节点被标记为受体类型.

在系统发育树中,我可以看到属于相同组或受体类型的蛋白质在同一分支中聚集在一起.所以我想折叠这些具有共同标签的分支,按给定的关键字列表对它们进行分组.

命令将是这样的:

./collapse_tree_by_label -f phylogenetic_tree.newick -l list_of_labels_to_collapse.txt -o collapsed_tree.eps(或pdf)

我的list_of_labels_to_collapse.txt将是这样的:A B C D

我的纽约树将是这样的:(A_1:0.05,A_2:0.03,A_3:0.2,A_4:0.1):0.9,(((B_1:0.05,B_2:0.02,B_3:0.04):0.6,(C_1:0.6) ,C_2:0.08):0.7):0.5,(D_1:0.3,D_2:0.4,D_3:0.5,D_4:0.7,D_5:0.4):1.2)

没有折叠的输出图像是这样的:http: //i.stack.imgur.com/pHkoQ.png

输出图像折叠应该是这样的(collapsed_tree.eps):http: //i.stack.imgur.com/TLXd0.png

三角形的宽度应表示分支长度,三角形的高度必须表示分支中的节点数.

我一直在玩R.中的"猿"包.我能够绘制一个系统发育树,但我仍然无法弄清楚如何通过标签中的关键字来折叠分支:

require("ape")
Run Code Online (Sandbox Code Playgroud)

这将加载树:

cat("((A_1:0.05,A_2:0.03,A_3:0.2,A_4:0.1):0.9,(((B_1:0.05,B_2:0.02,B_3:0.04):0.6,(C_1:0.6,C_2:0.08):0.7):0.5,(D_1:0.3,D_2:0.4,D_3:0.5,D_4:0.7,D_5:0.4):1.2):0.5);", file = "ex.tre", sep = "\n")
tree.test <- read.tree("ex.tre")
Run Code Online (Sandbox Code Playgroud)

这应该是崩溃的代码

这将绘制树:

plot(tree.test)
Run Code Online (Sandbox Code Playgroud)

plot r phylogeny ape-phylo

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

如何在 Tensorflow (python) 中随机选取和屏蔽张量的一部分

我正在 Tensorflow 2 中训练一个去噪自动编码器,一部分运行时间用于 CPU 对部分输入数据进行屏蔽,随机选择要屏蔽的索引,然后将它们的值设置为零。这是我的掩蔽函数,该掩蔽在每个纪元开始时以不同的 v 值重复:

import numpy as np

def masking_noise(X, v):

    X_noise = X.copy()

    n_samples = X.shape[0]
    n_features = X.shape[1]
    v = int(np.round(n_features*v))
    for i in range(n_samples):
        mask = np.random.choice(n_features, v, replace=False)

        for m in mask:
            X_noise[i][m] = np.repeat(0.,X.shape[2])

    return X_noise
Run Code Online (Sandbox Code Playgroud)

这是一个玩具示例:

a = np.array([[[1., 0.],
        [1., 0.],
        [1., 0.],
        [1., 0.],
        [0., 1.]],

       [[1., 0.],
        [1., 0.],
        [1., 0.],
        [1., 1.],
        [0., 1.]],

       [[1., 0.],
        [1., 0.],
        [1., 0.],
        [1., 0.],
        [1., 1.]]])

masking_noise(a, 0.40) …
Run Code Online (Sandbox Code Playgroud)

python numpy masking tensorflow tensorflow2.0

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