问题标签 [lasagne]
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.
python - 千层面 / Theano 梯度值
我目前正在使用 Lasagne / Theano 研究循环神经网络。
在训练时,使用 Theano 的符号梯度计算更新。
虽然梯度表达式一般来说非常好,但我也对梯度值感兴趣以监控训练。
我现在的问题是,是否有一个内置的方法也可以获取渐变值,这是我目前还没有找到的,或者我必须自己做。
提前致谢
numpy - Lasagne/Theano 不消耗多核,而 check_blas.py 消耗
我在具有多个cpu核心的 Lasagne/Theano 上运行逻辑回归分类器。
这是我的~/.theanorc文件:
theano/misc/ check_blas.py消耗了所有 20 个内核,但我的脚本没有。当我运行时:
我看到openmp的值为False:
openmp () Doc:允许(或不允许)使用 OpenMP 在 CPU 上进行并行计算。这是创建支持 OpenMP 并行化的 Op 时使用的默认值。最好通过 Theano 配置文件 ~/.theanorc 或使用环境变量 THEANO_FLAGS 来定义它。并行化仅对实现它的某些操作进行,即使对于实现并行性的操作,每个操作都可以自由地尊重或不尊重这个标志。您可以使用环境变量 OMP_NUM_THREADS 控制使用的线程数。如果设置为 1,我们默认禁用 Theano 中的 openmp。 值:假
有人知道我应该如何为我的脚本启用多核功能吗?
我的系统上安装了 blas、atlas、openmp 等,正如我所说,与 check_blas.py 完美配合。
python - 烤宽面条/ theano的自定义损失函数
我正在尝试创建一个用于千层面的自定义损失函数。
我想使用我用 numpy 编写的 Sorensen-dice 系数,并像这样用于评估:
哪个在做:
骰子 = (2*|X & Y|)/ (|X|+ |Y|)
我现在正在尝试在 theano 中实现这一点,不确定它有多可行。
是否可以将其用作损失函数?我想在分割卷时使用它,但我因为这对于反向传播应该是可区分的,我该如何改变它?
有什么想法吗?
python - 保存 theano/lasagne 输出参数以供将来分类
我正在尝试保存我的输出参数,以便以后可以继续训练/分类。
我目前正在使用:
正如这里建议的那样。但是,尽管从千层面导入 get_all_param_values,我仍然收到错误消息:
AttributeError:“TensorVariable”对象没有属性“get_params”
我要保存的图层是:
难道我做错了什么?
python - 烤宽面条的学习率衰减
我正在使用nesterov 动量来更新卷积神经网络的权重。我正在使用千层面来构建 CNN。如何实现每个时期的学习率衰减?
python - 人工神经网络不学习训练样本的较低值
我正在尝试训练 ANN,但直到现在它还没有学习训练样本的较低值。我尝试过使用不同的 python 库来训练 ANN。目的是根据其他天气参数预测太阳辐射(回归问题)。我认为 ANN 将较低的值(冬季/阴天)与夜间值(可能)混淆了。我尝试了以下方法,但都没有奏效;
- 在不同值之间缩放数据,例如 [0,1],[-1,1]
- 标准化数据以具有零均值和单位方差
- 洗牌数据
- 增加训练样本(从 3 年到 10 年)
- 使用不同的训练函数(例如 bfds、gdm)
- 尝试不同的传递函数(例如 LogSig、TanSig)
- 使用少量输入变量
- 改变隐藏层和隐藏层的神经元
下面是我使用神经实验室的代码,但我也使用了 nolearn/lasagne,但它也不起作用。
python - 每层的千层面自定义过滤器
我在网上调查了很多,但我没有找到答案!是否可以在 python 中为“Lasagne”包中的每一层定义一个自定义过滤器?(不从特殊过滤器中选择,您也可以为每一层设计过滤器)
如果是,如果没有,是否有任何库可以让我设计 CNN 的能力(平台不重要,但首选 python 或 matlab)?
neural-network - 如何正确添加和使用 BatchNormLayer?
介绍
根据千层面文档:“该层应插入线性变换(例如 DenseLayer 或 Conv2DLayer)及其非线性之间。便利函数 batch_norm() 修改现有层以在其非线性之前插入批量归一化。”
然而,千层面也有实用功能:
千层面.layers.batch_norm
但是,由于我的实施,我无法使用该功能。
我的问题是:我应该如何以及在哪里添加 BatchNormLayer?
我可以在卷积层之后添加它吗?还是我应该在 maxpool 之后添加?我是否必须手动消除图层的偏差?
使用的方法 我只是这样使用它:
参考:
https://github.com/Lasagne/Lasagne/blob/master/lasagne/layers/normalization.py#L120-L320
http://lasagne.readthedocs.io/en/latest/modules/layers/normalization.html
neural-network - 在千层面中使用卷积层然后循环层
我正在尝试实现一个神经网络,该网络在一个轴上输入音符/音高,在另一个轴上输入该音符的八度音阶。
输入应该通过卷积层(Conv2DLayer)。卷积之后,输出应该通过 LSTM 层。
输入 -> 卷积和池化层 -> LSTM 层 -> 输出
问题是 LSTM 层和卷积层具有特定的输入形状
Conv2DLayer 预期输入形状:(batch_size, num_channels, rows, columns) LSTMLayer 预期输入形状:(batch_size, sequence_len, num_inputs)
如何获取形状(batch_size、sequence_len、num_channels、行、列)或类似的输入并构建这样的网络?如果我通过删除 sequence_len 来重塑和展平形状,那么行或列都必须改变,并且形状将被扭曲。
lasagne - 如何在 Lasagne 中为 EmbeddingLayer 提供固定的嵌入矩阵?
我已经实现了一个使用 Lasagne EmbeddingLayer 的深度学习架构。
现在我已经使用 word2vec 学习了词向量,并且不希望词向量成为我的网络的参数。
阅读文档后,我认为它指定提供给'W'参数的numpy数组是嵌入矩阵的初始值。
如何在代码中声明/指定 EmbeddingLayer 以便它使用输入权重矩阵作为词向量的固定矩阵?