问题标签 [torch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
neural-network - [火炬]如何在nn模型中读取权重
我使用 itorch notebook 构建了 nn 模型。
向模型输入数据
然后,我打印模型并得到了这个。
如何读取 nn.linear 中的权重?
提前致谢。
lua - 期待 nn.Sum 的连续张量错误
我有一个 2x16x3x10x10 张量输入我的网络。我的网络有两个并行工作的部分。第一部分采用 16x3x10x10 矩阵并计算最后两个维度的和,返回 16x3 张量。第二部分是产生 16x160 张量的卷积神经网络。每当我尝试运行此模型时,都会收到以下错误:
这是模型的相关部分:
该代码在输入张量为 2x1x3x10x10 时有效,但在张量为 2x16x3x10x10 时无效。
编辑:我只是意识到当我做模型:向后而不是模型:向前时会发生这种情况。以下是相关代码:
x 是 2x16x3x10x10 张量,dE_dy 是 16x2。
lua - Torch 中的自定义空间卷积
我需要在 Torch 中执行自定义空间卷积。不是简单地将每个输入像素乘以该像素的权重并将它们与滤波器的偏差相加以形成每个输出像素,而是在将它们加在一起之前对输入像素执行更复杂的数学函数。
我知道如何做到这一点,但我不知道这样做的好方法。我想出的最好方法是获取完整的输入张量,创建一堆次级张量,它们是原始的“视图”而不分配额外的内存,将它们放入复制层(输出过滤器计数是复制count),并将其馈送到一个 ParallelTable 层中,该层包含一堆常规层,这些层的参数在过滤器之间共享。
问题是,尽管这在内存方面很好,而且开销非常可管理,但我们在这里讨论的是inputwidth ^ inputheight ^ inputdepth ^ outputdepth mini-networks。也许有一些方法可以创建大规模的“长而高”的网络,可以同时处理整个复制的输入集,但是我如何创建部分连接(如卷积)而不是完全连接的层?
我本来希望只使用继承来创建常规SpatialConvolution“类”的特殊副本并对其进行修改,但我什至无法尝试,因为它是在外部 C 库中实现的。我不能只在常规 SpatialConvolution 层之前使用常规层,因为我需要对每个过滤器使用不同的权重和偏差进行数学运算(在相同过滤器的应用程序与不同输入坐标之间共享)。
lua - 通过命令行发送 ctrl-c 时如何在 lua 中捕获 ctrl-c
我想知道用户何时从命令行按下 control-c,这样我就可以保存一些东西。
我该怎么做呢?我看过但还没有真正看到任何东西。
注意:我对 lua 有点熟悉,但我不是专家。我主要使用 lua 来使用 Torch 库(http://torch.ch/)
lua - Lua 命令行字符串
假设我用这个 cmd 调用 Lua:
如何从 Lua 访问相同的命令行字符串?
我知道该arg
表,但它从原始命令字符串中删除了所有引号,使其难以重建:
如果我可以将确切的字符串从 Lua 中保存到一个文件中,我以后可以轻松地再次调用它。
lua - 使用 ClassNLLCriterion 在 Torch 中进行批处理
我正在尝试在 Torch 中实现一个简单的 NN 以了解更多信息。我创建了一个非常简单的数据集:从 0 到 15 的二进制数,我的目标是将这些数字分为两类 - 第 1 类是数字 0-3 和 12-15,第 2 类是其余的。以下代码是我现在拥有的(我只删除了数据加载例程):
这是数据和类张量的样子:
这就是我所期望的。但是,在运行此代码时,我在 line loss = criteria:forward( prediction, class )上收到以下错误:
torch/install/share/lua/5.1/nn/ClassNLLCriterion.lua:69:尝试对 nil 值执行算术运算
当我像这样修改训练例程(一次处理一个数据点而不是批量处理所有 16 个数据点)时,它可以工作并且网络成功地学会了识别这两个类:
我不确定我正在尝试做的“批处理”可能有什么问题。简要看一下 ClassNLLCriterion 并没有帮助,看来我正在给它预期的输入(见下文),但它仍然失败。它接收的输入(预测和张量类)如下所示:
有人可以帮我吗?谢谢。
backpropagation - 反向传播如何在 Torch 7 中工作?
我试图通过 Torch 教程来理解监督学习。
http://code.madbits.com/wiki/doku.php?id=tutorial_supervised
和反向传播:
http://home.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html
据我所知,本火炬教程中的参数更新在第 4 步训练程序中,
例如,我得到了这个
df_do 是这个吗?
我知道在这个例子中目标是 9,输出是 4,所以结果是错误的,并给出 df_do 的第 9 个元素“-1”。
但为什么 ?
根据http://home.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html,
df_do 是 [目标(期望的输出) - 输出]。
neural-network - Torch:NN 处理文本和数字输入
我有以下 NN 架构:
第1部分:
第2部分:
我想做的是使用这两个部分的输出作为另一部分的输入:
注意第 1 部分有 128 个输出,第 2 部分有 4 个,最后第 3 部分有 132 个输入。所以基本上我想要的是一个接受两种类型输入的网络(第 1 部分用于文本,第 2 部分用于数字向量)并在第三层中使用这些信息进行 2 类分类。
我查看了各种容器,但似乎没有什么是我需要的。具体来说,我查看了 nn.Parallel 但从文档看来它做了一些完全不同的事情(两个不同模块的相同输入)。第一个问题是网络的输入应该是什么样子(因为每个部分都采用不同类型的张量,我认为一个简单的表(数组)就可以了,它的第一个元素是 2D 张量,第二个元素是 1D 张量) 以及如何将其输出插入另一个网络,以便我可以像往常一样使用前向/后向调用。
有什么办法可以做到这一点?
谢谢!
lua - 重新编译后,如何强制依赖项在 Torch 中重新加载?
我正在研究一个 luarock 的火炬包。在测试期间,我想在 require "mypackage"
不退出th
会话的情况下获取最新代码。
但是,据我了解,require
缓存加载的包,因此不会再次加载它们。Lua 手册似乎建议有一个全局变量来存储这个_LOADED
缓存信息,我可以简单地将我的包的值设置为nil
:
然而,在火炬中,似乎没有一个_LOADED
全球性的,即使在我需要一些包之后。
想法?