我最近一直在研究深度学习框架,并一直在想PyTorch这个名字的起源.
有了Keras,他们的主页很好地解释了这个名字的起源,而像TensorFlow这样的名字背后的推理似乎很清楚.然而,对于PyTorch,我似乎无法想象为什么它如此命名.
当然,我理解"Py-"前缀并且也知道PyTorch在某种意义上是Torch的继承者.但我仍然想知道:"-Torch"部分背后的原始想法是什么?知道这个名字的来源是什么吗?
谢谢你的帮助!
JuliaSymmetric的LinearAlgebra包中的类型有什么意义?似乎它等同Hermitian于实矩阵的类型(尽管:这是真的吗?)。如果这是真的,那么唯一Symmetric不冗余的情况Hermitian是复矩阵,并且想要对称而不是 Hermitian 复矩阵会令人惊讶(不过也许我错了)。
我问这个问题的部分原因是我有时发现自己在做这样的个案工作:如果我有一个实矩阵,那么使用Symmetric; 如果复杂,那么Hermitian. 似乎我可以通过始终使用Hermitian. 如果我这样做,我会错过性能吗?
(另外,可能相关的额外问题:为什么HermTridiagonal除了 之外没有类型SymTridiagonal?我可以使用前者。另外,它似乎比SymTridiagonal考虑上述更有用。)
以下 C++ 代码行中的双花括号是什么意思?
piranha::symbol_set ss({{piranha::symbol(detail::poly_print(var))}});
Run Code Online (Sandbox Code Playgroud)
对于上下文,这是来自 SymEngine 代码 ( "symengine/polys/uintpoly_piranha.h")中的一个文件,可以在下面的链接中找到,上面一行中使用的 Piranha 库也是如此。
我知道单花括号用作初始值设定项列表,但是括号集中的双花括号的含义对我来说意义不大。
我在双花括号上发现的主要内容是这篇文章,但它似乎不适用于这里。
另外,我很抱歉链接这样的源代码,但由于我缺乏理解,我不确定如何制作一个较小的例子。
谢谢!
鉴于以下功能,
function floop(exp)
a = 5
b = 10
ex = Expr(:call, :+, 1, exp);
return eval(ex);
end
Run Code Online (Sandbox Code Playgroud)
如果我然后跑
floop(Symbol("b"))
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息,说b未定义。为什么这不起作用?我怎样才能使这项工作?
在Windows 10上使用Ubuntu bash终端(这里的安装说明),我安装了Anaconda,并且一直使用Jupyter笔记本电脑没有问题.不幸的是,Jupyter无法从子系统中找到可运行的浏览器,因此我必须复制并粘贴它在终端中输出的链接 - 但这是可行的.当我尝试打开多个笔记本时,主要问题就出现了.通常,Jupyter会检测到一个端口(8888默认情况下)已经被使用并创建一个新端口,但它似乎无法检测到这一点,因此当我使用它生成的链接时,我最终看到我打开的第一个笔记本而不是新的.
知道问题可能是什么吗?如果没有,我怎么能手动解决这个问题呢?
我最近在看这篇关于vs的文章和这篇关于vs的文章,但我想知道与 slurm 和.mpirunmpiexecsrunsbatchmpirunsrun
通常在我看到的示例中,文件被发送到其中sbatch以srun <program>执行 MPI 程序,但我有时会看到使用mpirun或mpiexec代替的文件。然而,我不明白为什么有人要这样做。正如我最近问的另一个问题所示,它似乎使用mpirun或mpiexec可能产生各种(依赖于实现?)的错误,并且没有理由不使用srun.
这是否准确,或者您是否有充分的理由想要使用mpirun或mpiexec而不是srun在 slurm 管理的集群上执行程序?
我很高兴看到在 Julia 中你可以输入许多数学符号和希腊字母等等。更重要的是,我看到您可以通过\_xand键入下标和上标字母\^x。有趣的是,您可以键入一些上标大写字母,例如\^L,但不能键入相应的下标字母 ( \_L)。为什么会这样?
更重要的是,我正在滚动可以在 Julia 中输入的大量unicode 字符列表,发现您可以输入各种可疑的有用的东西,比如贵宾犬和浴缸。为什么你可以输入所有这些奇怪的东西,但你不能输入像大写下标这样的东西(这在 Julia 的上下文中似乎更有用)?
究竟是谁做出这些决定的?Julia 是完全遵循预先确定的标准,还是他们自己做出决定?(我会认为这是一个标准,但我不认为,例如,上标字母是unicode 字符的正常列表的一部分。)
考虑以下 Julia 中的简单程序:
function foo_time(x)
@time x.^2
return nothing
end
n = 1000;
foo_time(collect(1:n));
Run Code Online (Sandbox Code Playgroud)
如果我在控制台中运行它,则会@time报告 1 个分配,这正是我所期望的。但是,如果我更改n为10000,则@time报告 2 个分配。
更重要的是,如果我在没有句法循环融合的情况下(换句话说,没有点)将函数链接在一起,那么我似乎得到了预期分配的两倍。例如, write(x + x).^2 + x而不是用x.^2产生 3 个分配n = 1000,但它用 产生 6 个分配n = 10000。(尽管该模式并不严格继续:例如,(x + x + x).^2只为 产生 5 个分配n = 10000。)
为什么向量的大小会影响分配发生的次数?这里发生了什么?
这发生在 JupyterLab 控制台和普通的 Julia REPL 中。
在我的.bashrc文件中,我将以下两行:
alias foo1="echo $1"
alias foo2="echo '$1'"
Run Code Online (Sandbox Code Playgroud)
然后,在终端中,我得到以下输出:
$ foo1 hello world
hello world
$ foo2 hello world
hello world
Run Code Online (Sandbox Code Playgroud)
为什么产生额外的空间foo2?
如果我在终端中执行以下操作,则输出如下所示:
$ echo hello world
hello world
$ echo 'hello world'
hello world
Run Code Online (Sandbox Code Playgroud)
这让我认为foo1并且foo2应该做同样的事情.为什么它们实际上并没有输出完全相同的东西,为什么它们仅仅因为一个空格字符而不同?
(另外,为什么它们中的任何一个输出world?我希望只输出第一个参数.)
给定一个数组数组
x = [[1, 2, 3, 4], [4, 5, 6, 7]],
截断每个内部数组的干净有效的方法是什么,以便我最终得到
[[1, 2], [4, 5]]?
有没有x[:,1:2]像多维数组一样简单的东西?
我有一个看起来像的功能
function eom!(du, u, p)
@views a, b = u[:,1], u[:,2];
@views da, db = du[:,1], du[:,2];
y = # some stuff involving p and a;
da .= f(a, b, y);
db .= g(b, a);
end
Run Code Online (Sandbox Code Playgroud)
我现在想创建第二个完全相同的函数,除了最后一行读取
db .= g(b, y);
Run Code Online (Sandbox Code Playgroud)
我怎样才能最干净地做到这一点?当然,我可以只复制和粘贴并给函数命名略有不同的名称,但这似乎不理想,特别是如果似乎合理,我以后想要更多函数,其中的第二个参数g可能是别的东西。也许有一种方法可以将eom!一个表达式(通过参数p)传递给函数,该表达式将指定 的第二个参数g?或者有没有办法可以制作一些eom_generator可以输出我想要的所有功能的功能?也许宏是这样做的核心工具,但我不确定。