小编Cha*_*ker的帖子

Python的pycrypto库用于随机数生成与os.urandom

我试图理解并弄清楚我是否应该使用os.urandom()Crypto.Random.new()用于加密安全的伪随机数.

以下网站似乎建议使用os.urandom():

https://github.com/mozilla/PyHawk/pull/13

但我真的不明白为什么,我在网上找到的其他网站并没有真正解释使用哪个网站.

如果有人知道哪一个是加密使用的安全,我将不胜感激!

特别让我担心的一件事是,我打算用它来生成随机数,但我担心有一天我生成一些随机数,第二天生成器的状态是相同的,它开始生成相同的"随机"数字.

python random pycrypto

11
推荐指数
2
解决办法
4491
查看次数

如果我们将一个可训练参数与一个不可训练的参数组合在一起,那么原始的可训练参数是否可训练?

我有两个网,我只使用pytorch操作以一些奇特的方式组合他们的参数.我将结果存储在第三个网络中,该网络的参数设置为non-trainable.然后我继续并通过这个新网络传递数据.新网只是一个占位符:

placeholder_net.W = Op( not_trainable_net.W, trainable_net.W )
Run Code Online (Sandbox Code Playgroud)

然后我传递数据:

output = placeholder_net(input)
Run Code Online (Sandbox Code Playgroud)

我担心由于占位符网络的参数被设置为non-trainable不会实际训练它应该训练的变量.这会发生吗?或者将可训练的参数与不可训练的参数组合(然后设置参数不可训练的位置)时的结果是什么?


当前解决方案

del net3.conv0.weight
net3.conv0.weight = net.conv0.weight + net2.conv0.weight
Run Code Online (Sandbox Code Playgroud)
import torch
from torch import nn
import torch.optim as optim

import torchvision
import torchvision.transforms as transforms

from collections import OrderedDict

import copy

def dont_train(net):
    '''
    set training parameters to false.
    '''
    for param in net.parameters():
        param.requires_grad = False
    return net

def get_cifar10():
    transform = transforms.Compose(
        [transforms.ToTensor(),
         transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
    trainset = torchvision.datasets.CIFAR10(root='./data', train=True, …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network conv-neural-network pytorch

11
推荐指数
3
解决办法
1038
查看次数

包如何在golang中工作

我试图理解包的工作方式在golang实际执行的方面更好,而不是通常做或被认为是好的做法(我们以后也可以谈论好的做法,但我希望先了解一下).

有效开始说:

"另一个惯例是包名是其源目录的基本名称......"

但是,上面的描述似乎并不是强制要求的.因此,我想知道,如果我被允许在同一目录库的顶部有多个具有不同包声明的文件.如果允许我在同一目录中有多个包声明,那么如何导入它们并在同一个文件中单独使用它们?基本上,我想我遇到的问题之一是由于一些go教程/文档的措辞.如果是按惯例,那么对我而言,它暗示它不是由语言强制执行的.因为,例如,程序员不按惯例编写函数的关键字.我们写,因为否则go会对你大喊大叫,它不会编译.因此,我希望用下面的示例澄清这一点(如果可能的话,更改go的文档,因为在我看来这是一个大问题,如何做到这一点?).funcfunc

例如说我有三个文件A.go,B.go,C.go打印打印功能Print(),简单地打印出A,B,C分别.它们都位于同一个名为maybe的基目录中base.然后每个都有一个不同的包声明package Apkg, package Bpkg, package Cpkg.

那你怎么去进口呢?以下工作会有效吗?

package main

import(
    nameA "github.com/user_me/base/Apkg"
    nameB "github.com/user_me/base/Bpkg"
    nameC "github.com/user_me/base/Cpkg"
)

func main() {
    nameA.Print() \\prints a
    nameB.Print() \\prints b
    nameC.Print() \\prints c
}
Run Code Online (Sandbox Code Playgroud)

或者我们甚至不需要指定名称,如果包装状态的顶部已经不同:

package main

import(
    "github.com/user_me/base"
)

func main() {
    Apkg.Print() \\prints a
    Bpkg.Print() \\prints b
    Cpkg.Print() \\prints c
}
Run Code Online (Sandbox Code Playgroud)

打印文件是: …

import package go

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

错误是什么:`加载运行时CuDNN库:5005但源代码是用5103编译的意思?

我试图使用TensorFlow与GPU并得到以下错误:

I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K20m, pci bus id: 0000:02:00.0)
E tensorflow/stream_executor/cuda/cuda_dnn.cc:347] Loaded runtime CuDNN library: 5005 (compatibility version 5000) but source was compiled with 5103 (compatibility version 5100).  If using a binary install, upgrade your CuDNN library to match.  If building from sources, make sure the library loaded at runtime matches a compatible version specified during compile configuration.
F tensorflow/core/kernels/conv_ops.cc:457] Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms)
Run Code Online (Sandbox Code Playgroud)

当然我正在尝试修复此错误(虽然这已经被问到Loaded运行时CuDNN库:5005(兼容版本5000)但源代码是用5103(兼容版本5100)编译的)但我想了解错误.我总是尝试在发布之前尝试解决(编码)问题(寻求帮助)但是我很难开始这个问题因为错误信息对我来说似乎有点神秘/不清楚我似乎无法找到了解错误意味着什么的好资源.

为了理解错误,我把注意力集中在似乎是错误开始的那一行:

Loaded runtime CuDNN library: 5005 …
Run Code Online (Sandbox Code Playgroud)

python cuda tensorflow cudnn

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

如何使用 ppc64le 和 x86 跨不同版本的 pytorch(1.3.1 和 1.6.x)加载检查点?

正如我在这里概述的那样,由于硬件原因,例如使用 ppc64le IBM 架构,我一直在使用旧版本的 pytorch 和 torchvision。

出于这个原因,我在不同的计算机、集群和我的个人 mac 之间发送和接收检查点时遇到问题。我想知道是否有任何方法可以避免此问题的加载模型?例如,可能在使用 1.6.x 时以旧格式和新格式保存模型。当然,对于 1.3.1 到 1.6.x 是不可能的,但至少我希望有些东西会起作用。

有什么建议吗?当然,我理想的解决方案是我不必担心它,我可以随时加载和保存我的检查点以及我通常在所有硬件上统一腌制的所有内容。


我得到的第一个错误是 zip jit 错误:

RuntimeError: /home/miranda9/data/f.pt is a zip archive (did you mean to use torch.jit.load()?)
Run Code Online (Sandbox Code Playgroud)

所以我使用了它(和其他泡菜库):

# %%
import torch
from pathlib import Path


def load(path):
    import torch
    import pickle
    import dill

    path = str(path)
    try:
        db = torch.load(path)
        f = db['f']
    except Exception as e:
        db = torch.jit.load(path)
        f = db['f']
        #with open():
        # db = pickle.load(open(path, "r+"))
        # db = …
Run Code Online (Sandbox Code Playgroud)

pytorch ppc64le

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

是否可以在 SLURM 中暂停当前正在运行的提交脚本?

我有一些脚本发送到我可以使用 sbatch 访问的集群。但是,我想暂停这些正在运行的脚本,而不必取消它们的工作,因为它们已经运行了一段时间了。

有没有办法在不取消已经完成的作业的情况下保持/暂停当前正在运行的作业?

我在以下网站中发现可以通过以下方式暂停它们:

To pause a particular job:

scontrol hold <jobid>
Run Code Online (Sandbox Code Playgroud)

但是,我仍然有点不确定如何使其与作业数组一起使用。

slurm

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

在 MacOS (Apple/Mac) 上安装 Conda 的最佳方法是什么?

在 Mac 上安装 Anaconda 的推荐方法是什么?

我尝试过brew cask install anaconda
一段时间后返回anaconda was successfully installed!

之后,尝试conda命令返回command not found: conda

是否有任何后期安装需要完成?
在 MacOS 上安装 Conda 的推荐方法是什么?

python macos installation conda

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

pytorch 模型中的参数如何不是叶子而是在计算图中?

我正在尝试更新/更改神经网络模型的参数,然后将更新后的神经网络的前向传递放在计算图中(无论我们做了多少更改/更新)。

我尝试了这个想法,但是每当我这样做时,pytorch 都会将我更新的张量(在模型内部)设置为叶子,这会杀死我想要接收梯度的网络的梯度流。它终止了梯度流,因为叶节点不是我希望它们成为的计算图的一部分(因为它们不是真正的叶节点)。

我尝试了多种方法,但似乎没有任何效果。我创建了一个自包含的虚拟代码,用于打印我想要渐变的网络的渐变:

import torch
import torch.nn as nn

import copy

from collections import OrderedDict

# img = torch.randn([8,3,32,32])
# targets = torch.LongTensor([1, 2, 0, 6, 2, 9, 4, 9])
# img = torch.randn([1,3,32,32])
# targets = torch.LongTensor([1])
x = torch.randn(1)
target = 12.0*x**2

criterion = nn.CrossEntropyLoss()

#loss_net = nn.Sequential(OrderedDict([('conv0',nn.Conv2d(in_channels=3,out_channels=10,kernel_size=32))]))
loss_net = nn.Sequential(OrderedDict([('fc0', nn.Linear(in_features=1,out_features=1))]))

hidden = torch.randn(size=(1,1),requires_grad=True)
updater_net = nn.Sequential(OrderedDict([('fc0',nn.Linear(in_features=1,out_features=1))]))
print(f'updater_net.fc0.weight.is_leaf = {updater_net.fc0.weight.is_leaf}')
#
nb_updates = 2
for i in range(nb_updates):
    print(f'i = {i}')
    new_params = copy.deepcopy( loss_net.state_dict() ) …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network pytorch

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

当出现 Could not open lock file /var/lib/apt/lists/lock - open (13: Permissionied) 问题时,如何安全地在 docker 中使用 apt-get install ?

我想跑opam init,但出现错误:

\n
(iit_synthesis) brandomiranda~ \xe2\x9d\xaf docker build -t brandojazz/pycoq:test_brando ~/pycoq/tutorial/\n[+] Building 1.5s (12/19)                                                                                                                                                                                                                              \n => [internal] load build definition from Dockerfile                                                                                                                                                                                              0.0s\n => => transferring dockerfile: 2.33kB                                                                                                                                                                                                            0.0s\n => [internal] load .dockerignore                                                                                                                                                                                                                 0.0s\n => => transferring context: 2B                                                                                                                                                                                                                   0.0s\n => [internal] load metadata for docker.io/library/ubuntu:20.04                                                                                                                                                                                   0.2s\n => CACHED https://api.github.com/repos/IBM/pycoq/git/refs/heads/main                                                                                                                                                                             0.0s\n => [ 1/15] FROM docker.io/library/ubuntu:20.04@sha256:fd92c36d3cb9b1d027c4d2a72c6bf0125da82425fc2ca37c414d4f010180dc19                                                                                                                           0.0s\n => CACHED [ 2/15] RUN apt-get update   && apt-get install -y --no-install-recommends     ssh     git     m4     libgmp-dev     opam     wget     ca-certificates     rsync     strace …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu opam docker

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

如何解决 dist.init_process_group 挂起(或死锁)?

我本来想在 DGX A100 上设置 DDP(分布式数据并行),但它不起作用。每当我尝试运行它时,它就会挂起。我的代码非常简单,只需为 4 个 GPU 生成 4 个进程(为了调试,我只是立即销毁该组,但它甚至没有到达那里):

def find_free_port():
    """ /sf/ask/95568581/ """
    import socket
    from contextlib import closing

    with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s:
        s.bind(('', 0))
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        return str(s.getsockname()[1])

def setup_process(rank, world_size, backend='gloo'):
    """
    Initialize the distributed environment (for each process).

    gloo: is a collective communications library (https://github.com/facebookincubator/gloo). My understanding is that
    it's a library/API for process to communicate/coordinate with each other/master. It's a backend library.

    export NCCL_SOCKET_IFNAME=eth0
    export NCCL_IB_DISABLE=1

    /sf/ask/4275277331/

    https://pytorch.org/docs/stable/distributed.html#common-environment-variables
    """
    if rank …
Run Code Online (Sandbox Code Playgroud)

python gpu machine-learning multi-gpu pytorch

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