小编Cha*_*ker的帖子

无法在MAC OS X el capitan中更新brew并使用`require`继续获得Load错误

我不确定为什么会这样,但我不能在我的MAC OS X El Capitan中更新brew.我做了:

brew update

得到了:

warning: unable to unlink CONTRIBUTING.md: Permission denied
warning: unable to unlink SUPPORTERS.md: Permission denied
fatal: cannot create directory at '.github': Permission denied
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我放弃了上述命令,但还有其他问题:

sudo brew update
Password:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/brew.rb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud)

现在每当我做brew安装时,我得到:

brew update

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- …
Run Code Online (Sandbox Code Playgroud)

macos homebrew

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

如何在go(golang)中测试未导出的(私有)函数?

我有兴趣在go中创建"未导出(私有)函数"的单元测试.然而,它基本上很难在测试包中形成单元测试,因为我必须使它们"公开".最终,它们打破了他们私密性的全部意义.关键是这些辅助函数有助于模块化,现在它们是模块化的,能够为它们创建单元测试而不会让除了测试包之外的所有人都可以使用它们会很好,很好它们不是应该被访问的函数或者除测试套件或实际包装本身之外的任何人使用.

有什么建议?是否可以导出到自己的包和一个额外的包或类似的东西?

unit-testing go

45
推荐指数
3
解决办法
2万
查看次数

在go(golang)函数中将通道作为参数传递的不同方法

我正在阅读一些代码并说几种不同的方式来传递频道.也许他们是一样的,但我想知道是否有任何差异,因为我在网上找不到文件:

1)

func serve(ch <-chan interface{}){ //do stuff }
Run Code Online (Sandbox Code Playgroud)

2)

func serve(ch chan<- interface{}){ //do stuff }
Run Code Online (Sandbox Code Playgroud)

3)

func serve(ch chan interface{}){ //do stuff }
Run Code Online (Sandbox Code Playgroud)

4)

func server(ch *chan interface{}){ //do stuff}
Run Code Online (Sandbox Code Playgroud)

我想知道它们之间有什么区别,如果它们只是等同的方式来做同样的事情:在不同的goroutines周围传递一个通道.

注意:我知道没有理由将指针传递给chan,map或slice或函数值,因为这些都是内部包含指针的引用类型(如果您希望被调用者更改,则会出现异常引用类型标题).我提供它的唯一原因是为了完整性(即真正提供可以尝试将通道作为参数传递的每种方式,并且有希望地提出问题,引用所有方法来进行此操作并对它们进行比较).

concurrency channel go

45
推荐指数
3
解决办法
4万
查看次数

如何将 Pytorch (+ cuda) 与 A100 GPU 结合使用?

我试图将当前代码与 A100 GPU 一起使用,但出现此错误:

---> backend='nccl'
/home/miranda9/miniconda3/envs/metalearningpy1.7.1c10.2/lib/python3.8/site-packages/torch/cuda/__init__.py:104: UserWarning: 
A100-SXM4-40GB with CUDA capability sm_80 is not compatible with the current PyTorch installation.
The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_61 sm_70 sm_75 compute_37.
If you want to use the A100-SXM4-40GB GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/
Run Code Online (Sandbox Code Playgroud)

这相当令人困惑,因为它指向通常的 pytorch 安装,但没有告诉我将 pytorch 版本 + cuda 版本的哪种组合用于我的特定硬件(A100)。为 A100 安装 pytorch 的正确方法是什么?


这些是我尝试过的一些版本:

# conda install -y pytorch==1.8.0 torchvision cudatoolkit=10.2 -c pytorch
# conda install -y pytorch torchvision cudatoolkit=10.2 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network pytorch

45
推荐指数
2
解决办法
6万
查看次数

当 torch 无法找到 cuda,错误:版本 libcublasLt.so.11 未在文件 libcublasLt.so.11 中定义并具有链接时间参考时,如何修复?

我通过 pytorch import 收到此错误python -c "import torch"

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/afs/cs.stanford.edu/u/brando9/ultimate-utils/ultimate-utils-proj-src/uutils/__init__.py", line 13, in <module>
    import torch
  File "/dfs/scratch0/brando9/miniconda/envs/metalearning_gpu/lib/python3.9/site-packages/torch/__init__.py", line 191, in <module>
    _load_global_deps()
  File "/dfs/scratch0/brando9/miniconda/envs/metalearning_gpu/lib/python3.9/site-packages/torch/__init__.py", line 153, in _load_global_deps
    ctypes.CDLL(lib_path, mode=ctypes.RTLD_GLOBAL)
  File "/dfs/scratch0/brando9/miniconda/envs/metalearning_gpu/lib/python3.9/ctypes/__init__.py", line 382, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /dfs/scratch0/brando9/miniconda/envs/metalearning_gpu/lib/python3.9/site-packages/torch/lib/../../nvidia/cublas/lib/libcublas.so.11: symbol cublasLtHSHMatmulAlgoInit, version libcublasLt.so.11 not defined in file libcublasLt.so.11 with link time reference
Run Code Online (Sandbox Code Playgroud)

如何解决它?

有关的:

cuda pytorch

35
推荐指数
3
解决办法
8万
查看次数

如何以干净,高效的方式在pytorch中获得迷你批次?

我试图做一个简单的事情,用火炬训练带有随机梯度下降(SGD)的线性模型:

import numpy as np

import torch
from torch.autograd import Variable

import pdb

def get_batch2(X,Y,M,dtype):
    X,Y = X.data.numpy(), Y.data.numpy()
    N = len(Y)
    valid_indices = np.array( range(N) )
    batch_indices = np.random.choice(valid_indices,size=M,replace=False)
    batch_xs = torch.FloatTensor(X[batch_indices,:]).type(dtype)
    batch_ys = torch.FloatTensor(Y[batch_indices]).type(dtype)
    return Variable(batch_xs, requires_grad=False), Variable(batch_ys, requires_grad=False)

def poly_kernel_matrix( x,D ):
    N = len(x)
    Kern = np.zeros( (N,D+1) )
    for n in range(N):
        for d in range(D+1):
            Kern[n,d] = x[n]**d;
    return Kern

## data params
N=5 # data set size
Degree=4 # number dimensions/features
D_sgd = …
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning deep-learning pytorch

32
推荐指数
4
解决办法
3万
查看次数

使用Python将AST形式的Coq术语转换为波兰语表示法

假设我有一个任意的 Coq术语(使用s-expressions / sexp的AST格式),例如:

n = n + n

我想自动将其转换为:

= n + n n

通过遍历AST树(由于sexp,它是列表的嵌套列表)。Python中是否有可以执行此操作的标准库?

现在,如果我要写下要执行的算法/伪代码(假设我可以将sexp转换为某些实际的树对象):

def ToPolish():
    '''
    "postfix" tree traversal
    '''
    text = ''
    for node in root.children:
        if node is atoms:
            text := text + node.text
        else:
            text := text + ToPolish(node,text)
    return text
Run Code Online (Sandbox Code Playgroud)

我认为这很接近,但我认为某处存在一个小错误...


AST示例:

 (ObjList
  ((CoqGoal
    ((fg_goals
      (((name 4)
        (ty
         (App
          (Ind
           (((Mutind (MPfile (DirPath ((Id Logic) (Id Init) (Id Coq))))
              (DirPath ()) (Id eq))
             0)
            (Instance ())))
          ((Ind
            (((Mutind (MPfile (DirPath ((Id …
Run Code Online (Sandbox Code Playgroud)

python tree abstract-syntax-tree coq

26
推荐指数
1
解决办法
518
查看次数

R使用什么类型的正交多项式?

我试图在R中的以下代码中匹配正交多项式:

X <- cbind(1, poly(x = x, degree = 9))
Run Code Online (Sandbox Code Playgroud)

但是在python中.

为此,我实现了自己的方法来给出正交多项式:

def get_hermite_poly(x,degree):
    #scipy.special.hermite()
    N, = x.shape
    ##
    X = np.zeros( (N,degree+1) )
    for n in range(N):
        for deg in range(degree+1):
            X[n,deg] = hermite( n=deg, z=float(x[deg]) )
    return X
Run Code Online (Sandbox Code Playgroud)

虽然它似乎不匹配它.有人知道它使用的正交多项式的类型吗?我尝试在文档中搜索但没有说.


为了给出一些上下文,我试图在python中实现以下R代码(https://stats.stackexchange.com/questions/313265/issue-with-convergence-with-sgd-with-function-approximation-using-polynomial- lin/315185#comment602020_315185):

set.seed(1234)

N <- 10
x <- seq(from = 0, to = 1, length = N)
mu <- sin(2 * pi * x * 4)
y <- mu
plot(x,y)

X <- cbind(1, poly(x = x, degree …
Run Code Online (Sandbox Code Playgroud)

python r machine-learning polynomial-math gradient-descent

25
推荐指数
1
解决办法
874
查看次数

什么是-ntasks或-n任务在SLURM中做什么?

我正在使用SLURM来使用一些计算集群,它有-ntasks或者-n.我显然已经阅读了它的文档(http://slurm.schedmd.com/sbatch.html):

sbatch不启动任务,它请求分配资源并提交批处理脚本.此选项建议Slurm控制器在分配中运行的作业步骤将启动最多数量的任务并提供足够的资源.默认值是每个节点一个任务,但请注意--cpus-per-task选项将更改此默认值.

具体部分我不明白它的含义是:

在分配内运行将启动最多数量的任务并提供足够的资源.

我有几个问题:

  1. 我想我的第一个问题是"任务"这个词是什么意思,而不同之处在于SLURM环境中的"作业"这个词.我通常认为一项工作是在sbatch下运行bash脚本sbatch my_batch_job.sh.不确定任务意味着什么.
  2. 如果我将单词task与job相等,那么我认为它会根据参数多次运行相同的相同bash脚本-n, --ntasks=<number>.但是,我明明测试了它的集群中,跑了echo hello--ntask=9和我预期的sbatch将回声你好9次到stdout(被收集在slurm-job_id.out,但让我惊讶的是,那里是我的回声你好脚本的单次执行那么,什么是这个甚至命令呢?似乎它什么也没做,或者至少我看不到假设要做什么.

我知道-a, --array=<indexes>多个工作的选项存在.这是一个不同的主题.我只是想知道--ntasks想要做什么,理想情况下是一个例子,以便我可以在集群中测试它.

bash slurm

22
推荐指数
3
解决办法
8039
查看次数

当存在GPU时,如何在TensorFlow中的单个脚本中训练多个模型?

假设我可以在一台机器上访问多个GPU(为了争论,假设8GPU,每台机器的最大内存为8GB,每台机器有一定数量的RAM和磁盘).我想在一个单独的脚本和一台机器中运行一个程序来评估TensorFlow中的多个模型(比如50或200),每个模型都有不同的超参数设置(比如,步长,衰减率,批量大小,时期/迭代等).在训练结束时假设我们只是记录它的准确性并摆脱模型(如果你想假设模型经常检查指向,那么它可以扔掉模型并从头开始训练.你也可以假设某些其他数据可能被记录,如特定的超级参数,列车,验证,列车错误被记录为我们训练等).

目前我有一个(伪)脚本,如下所示:

def train_multiple_modles_in_one_script_with_gpu(arg):
    '''
    trains multiple NN models in one session using GPUs correctly.

    arg = some obj/struct with the params for trianing each of the models.
    '''
    #### try mutliple models
    for mdl_id in range(100):
        #### define/create graph
        graph = tf.Graph()
        with graph.as_default():
            ### get mdl
            x = tf.placeholder(float_type, get_x_shape(arg), name='x-input')
            y_ = tf.placeholder(float_type, get_y_shape(arg))
            y = get_mdl(arg,x)
            ### get loss and accuracy
            loss, accuracy = get_accuracy_loss(arg,x,y,y_)
            ### get optimizer variables
            opt = get_optimizer(arg)
            train_step = …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network tensorflow

22
推荐指数
1
解决办法
9793
查看次数