我正在阅读关于go(golang)字符串的以下对话.go中的字符串只是指向(只读)数组和长度的指针.因此,当您将它们传递给函数时,指针将作为值而不是整个字符串传递.因此,我想到,如果这是真的,那么为什么你甚至被允许定义为带有*string作为参数的签名的函数?如果字符串已经加上,则数据是不可变/只读的,因此无论如何都无法更改它.如果已经在内部执行了指针,那么允许将指针传递给字符串有什么意义呢?
我正在使用集群管理器slurm,并且正在使用 sbatch(使用 python interpeter)运行提交脚本。sbatch 提交导入了我的一个名为main_nn.py. 该模块与我的提交目录位于同一位置,但是,即使该文件存在,python 也无法找到它。我很难弄清楚为什么会发生这种情况。我的python文件如下所示:
#!/usr/bin/env python
#SBATCH --job-name=Python
print('hi')
import main_nn
Run Code Online (Sandbox Code Playgroud)
但是我的 slurm 转储文件的输出是:
hi
Traceback (most recent call last):
File "/home/slurm/slurmd/job3223398/slurm_script", line6, in <module>
import main_nn
ImportError: No module named main_nn
Run Code Online (Sandbox Code Playgroud)
我尝试检查模块main_nn是否在当前目录中,并且确实在那里。因此,对我来说似乎可疑的第一件事是 slurm 文件中的错误说我的脚本的位置是 at"/home/slurm/slurmd/job3223398/slurm_script"而不是 at path_to_project。因此我继续添加了一行
os.system('pwd')
Run Code Online (Sandbox Code Playgroud)
查看我的脚本是从哪里执行的,令我惊讶的是它是path_to_project在"/home/slurm/slurmd/job3223398/slurm_script"哪个位置执行的,而不是在哪个位置执行,这一定意味着 sbatch 正在做一些时髦的事情来在一个位置执行脚本,但让它认为它在另一个位置。如果是这种情况,我该如何在 python 中进行导入,其中模块与我的提交脚本位于同一位置?我是否被迫将它放在一个包中并欺骗 python 认为它在一个包/库中?
我想重现:
来自论文https://arxiv.org/pdf/1312.6199.pdf.我想知道,如何在pytorch中实现这一点?我的主要困惑是因为loss_f我正在使用一个torch.nn.CrossEntropy()标准.我只需要更改我已经拥有的代码:
loss = criterion(outputs+r, labels)
loss.backward()
Run Code Online (Sandbox Code Playgroud)
至:
loss = criterion(outputs+r, labels)
loss = loss + c * r.norm(2)
loss.backward()
Run Code Online (Sandbox Code Playgroud)
或者那些东西(当然包括优化器中的r!).我知道它不太对,因为我没有明确地说明我是如何实现的x+r或超立方体约束,但那些是我仍需要弄清楚的部分.
我想目前我想在没有超立方体约束的情况下首先关注.如果我们假设我没事,那么上述是正确的吗?我只是想知道:
loss = loss + c * r.norm(2)
Run Code Online (Sandbox Code Playgroud)
尽力而为.
现在,如果我们确实包含超立方体约束,我的解决方案将如何变化?这是"惩罚功能方法"到位吗?
https://discuss.pytorch.org/t/how-does-one-implement-adversarial-examples-in-pytorch/15668
python machine-learning neural-network conv-neural-network pytorch
我想要(正确且官方的无错误方式)执行以下操作:
\n为此,我的猜测如下:
\nDDP(mdl)每个进程。我假设检查点保存了一个ddp_mdl.module.state_dict().大概代码:
\ndef save_ckpt(rank, ddp_model, path):\n if rank == 0:\n state = {\'model\': ddp_model.module.state_dict(),\n \'optimizer\': optimizer.state_dict(),\n }\n torch.save(state, path)\n\ndef load_ckpt(path, distributed, map_location=map_location=torch.device(\'cpu\')):\n # loads to\n checkpoint = torch.load(path, map_location=map_location)\n model = Net(...)\n optimizer = ...\n model.load_state_dict(checkpoint[\'model\'])\n optimizer.load_state_dict(checkpoint[\'optimizer\'])\n if distributed:\n model = DDP(model, device_ids=[gpu], find_unused_parameters=True)\n return model\nRun Code Online (Sandbox Code Playgroud)\n它是否正确?
\n我问的原因之一是分布式代码可能会出现微妙的错误。我想确保这不会发生在我身上。当然,我想避免死锁,但如果它发生在我身上,那就很明显了(例如,如果所有进程以某种方式尝试同时打开同一个 …
python distributed-computing neural-network deep-learning pytorch
我有一个很长的 coq 项目列表,我想用opam pin/install. 我想用 opam 安装它们,因为我正在使用这个使用 opam pin/install 的 python 工具(PyCoq)。COQ_PROJ.opam / *.opam给定一个可以使用 make 安装的 coq 项目,如何自动创建一个文件?
例如,适合我的 coq 项目/包 (proj/pkg) 的格式是这样的:https: //github.com/IBM/pycoq/tree/main/pycoq/test/lf
一个想法是,在 pip 中,我们可以轻松地从已安装的 python 项目创建 pip 需求文件(自动创建requirements.txt)。因此,一种可能的解决方案是:
pip freeze > requirements.txt运行与 but for coq等效的命令。如何做到这一点?
coq 项目的示例列表:
[
{
"project_name": "constructive-geometry",
"train_files": [
"problems.v",
"affinity.v",
"basis.v",
"orthogonality.v",
"part1.v",
"part3.v",
"part2.v"
],
"test_files": [],
"switch": "coq-8.10"
},
{
"project_name": "higman-s",
"train_files": …Run Code Online (Sandbox Code Playgroud) 当我使用slurm(http://slurm.schedmd.com/)工作负载管理器时,我遇到此错误.当我运行一些tensorflow python脚本时,有时会导致错误(附加).它似乎无法找到安装的cuda库,但我正在运行不需要GPU的脚本.因此,我发现为什么cuda会成为一个问题非常令人困惑.如果我不需要,为什么cuda安装会出现问题?
我从slurm-job_id文件中获得的唯一有用信息如下:
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:102] Couldn't open CUDA library libcudnn.so. LD_LIBRARY_PATH: /cm/shared/openmind/cuda/7.5/lib64:/cm/shared/openmind/cuda/7.5/lib
I tensorflow/stream_executor/cuda/cuda_dnn.cc:2092] Unable to load cuDNN DSO
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcuda.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcurand.so locally
E tensorflow/stream_executor/cuda/cuda_driver.cc:491] failed call to cuInit: CUDA_ERROR_NO_DEVICE
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:153] retrieving CUDA diagnostic information for host: node047
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:160] hostname: node047
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:185] libcuda reported version is: Not …Run Code Online (Sandbox Code Playgroud) 我想实现一个(元)可训练步长。我用这篇文章尝试过:
https://discuss.pytorch.org/t/how-does-one-have-the-parameters-of-a-model-not-be-leafs/70076/17
并与更高的图书馆(https://github.com/facebookresearch/higher)没有运气......
我试过:
eta = torch.tensor([0.5], requires_grad=True).view(1)
inner_opt = torch.optim.Adam(child_model.parameters(), lr=eta)
#meta_params = itertools.chain(child_model.parameters(),eta.parameters())
meta_params = itertools.chain(child_model.parameters())
meta_opt = torch.optim.Adam(meta_params, lr=1e-3)
# do meta-training/outer training minimize outerloop: min_{theta} sum_t L^val( theta^{T} - eta* Grad L^train(theta^{T}) )
nb_outer_steps = 10 # note, in this case it's the same as number of meta-train steps (but it's could not be the same depending how you loop through the val set)
for outer_i, (outer_inputs, outer_targets) in enumerate(testloader, 0):
meta_opt.zero_grad()
if outer_i …Run Code Online (Sandbox Code Playgroud) 有时我发现很难使用 Isabelle,因为我无法像在正常编程中那样使用“打印命令”。
例如,我想看看什么?thesis. 具体语义书说:
未知 ?thesis 隐含地与引理或 show 陈述的任何目标相匹配。下面是一个典型的例子:
我的愚蠢示例 FOL 证明是:
lemma
assumes "(? x. ? y. x ? y)"
shows "(?x. ? y. y ? x)"
proof (rule allI)
show ?thesis
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
proof (state)
goal (1 subgoal):
1. ?x. ?y. y ? x
Failed to refine any pending goal
Local statement fails to refine any pending goal
Failed attempt to solve goal by exported rule:
?x. ?y. y ? x
Run Code Online (Sandbox Code Playgroud)
但我知道为什么。
我期望
?thesis === ?x. ?y. …Run Code Online (Sandbox Code Playgroud) 我正在对合成数据进行实验(例如拟合正弦曲线),我在 pytorch 中遇到了非常小的错误。一如约2.00e-7。我正在阅读有关机器精度的信息,它似乎非常接近机器精度。我怎么知道这是否会导致问题(或者它是否已经存在,例如我无法区分不同的错误,因为它们是“机器零”)。
错误:
p = np.array([2.3078539778125768e-07,
1.9997889411762922e-07,
2.729681222011256e-07,
3.2532371115080884e-07])
m = np.array([3.309504692539563e-07,
4.1058904888091606e-06,
6.8326703386053605e-06,
7.4616147721799645e-06])
Run Code Online (Sandbox Code Playgroud)
让我感到困惑的是,我尝试将我认为的数字添加到较小的数字中,以便它没有返回任何差异,但它确实返回了一个差异(即我尝试a+eps = a使用eps = smaller than machine precision):
import torch
x1 = torch.tensor(1e-6)
x2 = torch.tensor(1e-7)
x3 = torch.tensor(1e-8)
x4 = torch.tensor(1e-9)
eps = torch.tensor(1e-11)
print(x1.dtype)
print(x1)
print(x1+eps)
print(x2)
print(x2+eps)
print(x3)
print(x3+eps)
print(x4)
print(x4+eps)
Run Code Online (Sandbox Code Playgroud)
输出:
torch.float32
tensor(1.0000e-06)
tensor(1.0000e-06)
tensor(1.0000e-07)
tensor(1.0001e-07)
tensor(1.0000e-08)
tensor(1.0010e-08)
tensor(1.0000e-09)
tensor(1.0100e-09)
Run Code Online (Sandbox Code Playgroud)
我希望一切都为零,但事实并非如此。有人可以向我解释发生了什么吗?如果我的损失接近,1e-7我应该使用double而不是float? 谷歌搜索似乎 single 是 float afaik 的精度。
如果我想使用双打,什么是缺点/优点 …
在 pytorch 中运行 DDP 时,我不断遇到此问题:
\nTraceback (most recent call last):\n File "ml4coq-proj/embeddings_zoo/tree_nns/main_brando.py", line 330, in <module>\n main_distributed()\n File "ml4coq-proj/embeddings_zoo/tree_nns/main_brando.py", line 230, in main_distributed\n mp.spawn(fn=train, args=(opts,), nprocs=opts.world_size)\n File "/home/miranda9/miniconda3/envs/automl-meta-learning/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 199, in spawn\n return start_processes(fn, args, nprocs, join, daemon, start_method=\'spawn\')\n File "/home/miranda9/miniconda3/envs/automl-meta-learning/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 157, in start_processes\n while not context.join():\n File "/home/miranda9/miniconda3/envs/automl-meta-learning/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 105, in join\n raise Exception(\nException: process 1 terminated with signal SIGSEGV\nRun Code Online (Sandbox Code Playgroud)\n但这个错误的信息量相当小(例如,它没有告诉我什么进程或它试图访问什么),所以我不确定我需要做什么来解决它。
\n一些研究告诉你:
\n\n\nSIGSEGV:在 Linux 等 Unix 操作系统上,“分段违规”(也称为“信号 11”、“SIGSEGV”、“分段错误”或缩写为“sig11”或“segfault”)是由当系统检测到某个进程正在尝试访问不属于它的内存地址时,内核会向该进程发出通知。通常,这会导致违规进程被终止。
\n
是的,我确实有通常mp.spawn(fn=train, …
python distributed-computing multiprocessing neural-network pytorch