一个普通的Dense
层中的第一个参数也是单元
,是该层中神经元/节点的数量。然而,标准的LSTM单元如下所示:
(这是《了解LSTM网络》的返工版)
在Keras中,当我创建这样的LSTM对象时,LSTM(units=N,…)
,我是否真的创建了这些LSTM单元的N
?还是LSTM单元内“神经网络”层的大小,即公式中的W
?还是别的什么?
对于上下文,我正在基于这个示例代码工作。
以下是留档:https://keras.io/layers/recurrent/
它说:
单位:正整数,输出空间的维数。
这让我认为这是Keras LSTM“层”对象的输出数量。意味着下一层将有N
输入。这是否意味着在LSTM层中实际上存在这些LSTM单元的N
,或者可能正好有一个LSTM单元运行N
迭代,输出这些h[t]
值的N
,从h[t-N]
到h[t]
?
如果它只定义输出的数量,这是否意味着输入仍然可以是,比如说,只有一个,或者我们必须手动创建滞后输入变量x[t-N]
到x[t]
,由units=N
参数定义的每个LSTM单位一个?
在我写这篇文章时,我想到了参数return\u sequences
的作用。如果设置为True
,则所有N
输出将向前传递到下一层,而如果设置为False
,则仅将最后一个h[t]
输出传递到下一层。我说得对吗?
Keras递归神经网络“单位”参数的正确直观解释是,使用units=1
可以得到教科书中描述的RNN,使用units=n
可以得到一个由此类RNN的n
独立副本组成的层-它们将具有相同的结构,但是当它们被初始化为不同的权重时,它们会计算出不同的东西。
或者,您可以考虑在LSTM中使用<代码>单元=1 < /代码>,键值(f,i,c,h)是标量;对于units=n
,它们将是长度n
的向量。
这是否意味着在LSTM层中实际存在N个LSTM单元,或者可能正是一个LSTM单元运行N次迭代,输出N个h[t]值,从h[t-N]到h[t]?
首先是真的。在Keras LSTM层中有N个LSTM单元或单元。
keras.layers.LSTM(units, activation='tanh', recurrent_activation='hard_sigmoid', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', unit_forget_bias=True, kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0, implementation=1, return_sequences=False, return_state=False, go_backwards=False, stateful=False, unroll=False)
N=1
model = Sequential()
model.add(LSTM(N))
您可以查看这个问题以了解更多信息,尽管它是基于Keras-1. x API的。
基本上,单元
表示LSTM中内部单元的尺寸。因为在LSTM中,内部单元(图中的C_t和C_{t-1})、输出掩码(图中的o_t)和隐藏/输出状态(图中的h_t)的维度应该相同,因此输出的维度也应该是单位
-长度。
Keras中的LSTM
仅定义一个LSTM块,其单元长度为单位。如果您设置了
return\u sequence=True
,它将返回具有以下形状的内容:(批大小、时间跨度、单位)
。如果为false
,则只返回最后一次输出的形状(批次大小,单位)
。
至于输入,您应该为每个时间戳提供输入。基本上,形状类似于
(批次大小、时间跨度、输入尺寸)
,其中输入尺寸
可以不同于单元
。如果您只想在第一步提供输入,您可以在其他时间步简单地用零填充数据。
我想创建一个Keras模型,包括一个嵌入层,然后是两个具有dropout 0.5的LSTM,最后是一个具有softmax激活的密集层。 第一个LSTM应该将顺序输出传播到第二层,而在第二层中,我只想在处理完整个序列后获得LSTM的隐藏状态。 我尝试了以下方法: 但是,我遇到以下错误: 显然,LSTM并没有返回我所期望的形状输出。如何修复此问题?
问题内容: 给定训练有素的LSTM模型,我想对单个时间步执行推断,即在下面的示例中。在每个时间步之后,需要记住下一个“批”的内部LSTM状态(内存和隐藏状态)。对于推论的最开始,在给定输入的情况下计算内部LSTM状态。然后将它们存储在传递给LSTM的对象中。在训练期间,此状态会在每个时间步更新。但是,为了进行推断,我希望在批处理之间保存初始状态,即,仅需在最开始时计算初始状态,然后在每次“批处理”
如你所知,是一个已经在互联网上注册的域名。 我想知道为什么我可以创建一个域名为没有从AWS route53获得任何错误。 我已经看过这里的文件了。它看起来像是服务器的名称。com TLD不受我的route53配置的影响。 互联网阻止我影响域的机制是什么?
C:\WINDOWS\system32 导入tenstorflow Traceback(最近一次调用最后一次):文件"C:\用户\vbhav\AppData\本地\程序\Python\Python37\lib\site-包\tenstorflow\python\pywrap_tensorflow.py",第64行,在tensorflow.python._pywrap_tensorflow_inte
./src/App。less(./node_modules/css loader/dist/cjs.js??ref--5-oneOf-8-1!。/node_modules/postss loader/src??postss!。/node_modules/resolve url loader??ref--5-oneOf-8-4!。/src/App less)类型错误:此。getOptions不是一个