当我在阅读如何在pybrain中构建ANN时,他们说:
训练网络一些时代.通常你会在这里设置类似5的东西,
Run Code Online (Sandbox Code Playgroud)trainer.trainEpochs( 1 )
我寻找的是什么意思,然后我得出结论,我们使用一个数据时代来更新权重,如果我选择训练5个时期的数据作为pybrain建议,数据集将被分成5个子集,并且权重将更新最多5倍.
我熟悉在每次样本数据或特征向量后更新权利的在线培训,我的问题是如何确定5个时代足以构建模型并设置权重?这种方式在线培训的优势是什么?术语"epoch"也用于在线培训,是否意味着一个特征向量?
artificial-intelligence machine-learning neural-network pybrain
我试图了解TimeDistributed wrapper在Keras中的作用.
我得到TimeDistributed"将一个图层应用于输入的每个时间片."
但我做了一些实验并得到了我无法理解的结果.
简而言之,与LSTM层相关,TimeDistributed和Dense层具有相同的结果.
model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add(TimeDistributed(Dense(1)))
print(model.output_shape)
model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add((Dense(1)))
print(model.output_shape)
Run Code Online (Sandbox Code Playgroud)
对于这两种型号,我的输出形状为(无,10,1).
任何人都可以解释RNN层之后TimeDistributed和Dense层之间的区别吗?
我想在tensorflow中替换或修改op的梯度或图的一部分.如果我可以在计算中使用现有的梯度,那将是理想的.
在某些方面,这与以下内容相反tf.stop_gradient():在计算渐变时,我想要一个仅在计算渐变时使用的计算,而不是添加一个被忽略的计算.
一个简单的例子就是通过将它们与常数相乘(但不会将正向计算乘以常数)来简单地缩放渐变.另一个例子是将渐变剪辑到给定范围的东西.
当我运行keras脚本时,我得到以下输出:
Using TensorFlow backend.
2017-06-14 17:40:44.621761: W
tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow
library wasn't compiled to use SSE4.1 instructions, but these are
available on your machine and could speed up CPU computations.
2017-06-14 17:40:44.621783: W
tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow
library wasn't compiled to use SSE4.2 instructions, but these are
available on your machine and could speed up CPU computations.
2017-06-14 17:40:44.621788: W
tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow
library wasn't compiled to use AVX instructions, but these are
available on your machine and could speed up …Run Code Online (Sandbox Code Playgroud) 任何有关源代码的好教程将演示如何开发神经网络(步骤湾步骤为假人;-))
在阅读一些关于递归神经网络的图灵完整性的论文时(例如:使用神经网络进行图灵可计算性,Hava T. Siegelmann和Eduardo D. Sontag,1991),我感觉到那里给出的证据并不是真的那样实际的.例如,参考文献需要神经网络,神经元活动必须具有无限精确性(可靠地表示任何有理数).其他证明需要无限大小的神经网络.显然,这并不是那么实用.
但是我开始怀疑现在是否真的有意义要求图灵的完整性.根据严格的定义,现在没有计算机系统是图灵完整的,因为它们都不能模拟无限的磁带.
有趣的是,如果编程语言规范完整或不完整,那么编程语言规范最常开放.这一切归结为问题,如果它们总是能够分配更多的内存,并且函数调用堆栈大小是无限的.大多数规范并没有真正指定这一点.当然,所有可用的实现都受到限制,因此编程语言的所有实际实现都不是图灵完整的.
所以,你可以说是所有计算机系统都和有限状态机一样强大而不是更多.
这让我想到了这样一个问题:图灵这个词完全有用吗?
回到神经网络:对于神经网络(包括我们自己的大脑)的任何实际实现,它们将无法表示无限数量的状态,即通过严格定义图灵完整性,它们不是图灵完整的.那么神经网络图灵完全是否有意义的问题呢?
他们是否像有限状态机一样强大的问题早已得到了回答(1954年由明斯基回答,答案当然是肯定的)并且似乎也更容易回答.即,至少在理论上,这已经证明它们和任何计算机一样强大.
其他一些问题更多的是我真正想知道的:
是否有任何理论术语可以说明计算机的计算能力?(鉴于其有限的存储空间)
你怎么能比较神经网络的实际实现与计算机的计算能力?(如上所述,图灵完整性没有用.)
finite-automata state-machine turing-complete neural-network
更新:更好地解决问题.
我试图以XOR神经网络为例来理解反向传播算法.对于这种情况,有2个输入神经元+ 1个偏置,隐藏层中的2个神经元+ 1个偏置,以及1个输出神经元.
A B A XOR B
1 1 -1
1 -1 1
-1 1 1
-1 -1 -1
Run Code Online (Sandbox Code Playgroud)

我正在使用随机反向传播.
在阅读了一点之后我发现输出单元的错误传播到隐藏层...最初这是令人困惑的,因为当你到达神经网络的输入层时,每个神经元都会得到一个错误调整来自隐藏层中的两个神经元.特别是,首先很难掌握错误的分配方式.
步骤1计算每个输入实例的输出.
步骤2计算输出神经元(在我们的例子中只有一个)和目标值(s)之间的误差:
步骤2 http://pandamatak.com/people/anand/771/html/img342.gif
步骤3我们使用步骤2中的错误计算每个隐藏单元的错误h:
步骤3 http://pandamatak.com/people/anand/771/html/img343.gif
"权重kh"是隐藏单元h和输出单元k之间的权重,这是令人困惑的,因为输入单元没有与输出单元相关联的直接权重.在盯着公式几个小时后,我开始思考求和意味着什么,并且我开始得出结论,连接到隐藏层神经元的每个输入神经元的权重乘以输出误差并总结.这是一个合乎逻辑的结论,但公式似乎有点令人困惑,因为它清楚地说明了'权重kh'(在输出层k和隐藏层h之间).
我在这里正确理解了一切吗?任何人都可以证实吗?
什么是输入层的O(h)?我的理解是每个输入节点有两个输出:一个进入隐藏层的第一个节点,另一个进入第二个节点隐藏层.应该将两个输出中的哪一个插入O(h)*(1 - O(h))公式的一部分?
第3步http://pandamatak.com/people/anand/771/html/img343.gif
computer-science machine-learning backpropagation neural-network
在MNIST LSTM示例中,我不明白"隐藏层"的含义.是否随着时间的推移代表展开的RNN时会形成虚构层?
为什么num_units = 128在大多数情况下?
我知道我应该详细阅读colah的博客来理解这一点,但在此之前,我只是希望得到一些代码来处理我所拥有的时间序列数据.
我理解具有任意数量隐藏层的神经网络可以近似非线性函数,但是,它可以近似:
f(x) = x^2
Run Code Online (Sandbox Code Playgroud)
我想不出它怎么可能.这似乎是神经网络的一个非常明显的限制,可能会限制它能做什么.例如,由于这种限制,神经网络可能无法正确逼近统计中使用的许多函数,如指数移动平均线,甚至方差.
说到移动平均线,反复神经网络可以恰当地近似吗?我理解前馈神经网络甚至单个线性神经元如何使用滑动窗口技术输出移动平均值,但如果没有X个隐藏层(X是移动平均大小),递归神经网络如何做到呢?
另外,让我们假设我们不知道原始函数f,它恰好得到最后500个输入的平均值,然后如果它高于3则输出1,如果不是则输出0.但是一时间,假装我们不知道,这是一个黑盒子.
复发神经网络如何接近?我们首先需要知道它应该有多少次步,而我们却不知道.也许LSTM网络可以,但即便如此,如果它不是一个简单的移动平均线,那么它是一个指数移动平均线?我不认为即使是LSTM也能做到.
更糟糕的是,如果我们试图学习的f(x,x1)是简单的话
f(x,x1) = x * x1
Run Code Online (Sandbox Code Playgroud)
这似乎非常简单明了.神经网络可以学习它吗?我不知道怎么样.
我在这里遗漏了一些巨大的东西,还是机器学习算法非常有限?除了神经网络之外还有其他学习技术可以实际做到吗?
为什么我们需要在PyTorch中明确归零渐变?loss.backward()调用时为什么渐变不能归零?通过在图表上保持渐变并要求用户明确归零渐变来实现什么样的场景?