我非常努力地到处搜索,但是我无法在TensorFlow中找到creation of database failed
Error: database "jeff" does not exist
实际上是什么。我试图将我的问题与this question联系起来,但我无法在那里得到明确的解释。
在TensorFlow中,在创建基于LSTM的RNN时,我们使用以下命令
num_units
正如Colah's blog所说,这是一个基本的LSTM单元格:
现在,假设我的数据是:
cell = rnn.BasicLSTMCell(num_units=5, state_is_tuple=True)
我的意见是:
idx2char = ['h', 'i', 'e', 'l', 'o']
# Teach hello: hihell -> ihello
x_data = [[0, 1, 0, 2, 3, 3]] # hihell
x_one_hot = [[[1, 0, 0, 0, 0], # h 0
[0, 1, 0, 0, 0], # i 1
[1, 0, 0, 0, 0], # h 0
[0, 0, 1, 0, 0], # e 2
[0, 0, 0, 1, 0], # l 3
[0, 0, 0, 1, 0]]] # l 3
y_data = [[1, 0, 2, 3, 3, 4]] # ihello
形状x_one_hot = [[[1, 0, 0, 0, 0], # h 0
[0, 1, 0, 0, 0], # i 1
[1, 0, 0, 0, 0], # h 0
[0, 0, 1, 0, 0], # e 2
[0, 0, 0, 1, 0], # l 3
[0, 0, 0, 1, 0]]] # l 3
。
在this blog中,我们有以下图片
据我所知,[6,5]
将展开BasicLSTMCell
个时间步骤,其中t
是我的行数(如果我错了,请纠正我!)。例如,在下图中,LSTM将展开t
个时间步。
在Colah的博客中,它已经写了
每一行都带有一个完整的载体
所以,让我们看看我的t = 28
输入矩阵将如何通过这个基于LSTM的RNN。
如果我的上图是正确的,那么[6,5]
(我们在LSTM单元格中定义)究竟是什么?它是LSTM细胞的参数吗?
如果num_units
是单个LSTM单元格的参数,那么它应该是这样的:
如果上图是正确的,那么LSTM单元格的以下示意图中的那些5 num_unit
在哪里(根据Colah的博客)?
如果你能用一个数字给出答案,那将非常有帮助!您可以编辑或创建新的白板图here。
答案 0 :(得分:1)
你的理解是完全正确的。然而,不幸的是,Tensorflow术语和文献之间存在不一致。为了理解,您需要深入了解Tensorflow实现代码。
Tensorflow宇宙中的单元在Colah的宇宙中称为LSTM层(即展开版本)。这就是为什么你总是定义一个单元格,而不是Tensorflow架构中的一个层。例如,
cell=rnn.BasicLSTMCell(num_units=5,state_is_tuple=True)
检查此处的代码。
该包装中细胞的定义不同于文献中使用的定义。在文献中,单元格指的是具有单个标量输出的对象。此包中的定义是指这些单元的水平数组。
因此,为了理解Tensorflow中的num_units,最好设想一个展开的LSTM,如下所示。
在展开的版本中,您有一个输入 X_t ,这是一个张量。指定形状的输入时
[batch_size时,time_steps,n_input]
到Tensorflow,它知道从 time_steps 参数中展开多少次。
因此,如果您在TensorFlow中将 X_t 作为一维数组,则在Colahs展开版本中,每个LSTM单元格 x_t 将成为标量值(请注意大写情况X (矢量/数组)和小例x(标量) - 也在Colah的数字中)
如果您在Tensorflow中将 X_t 作为2D数组,那么在Colahs展开版本中,每个LSTM单元格 x_t 将变为一维数组/向量(如您的情况)这里)等等。
现在,这是最重要的问题。
Tensorflow如何知道输出/隐藏维度是什么** Z_t / H_t ?
(请注意H_t和Z_t之间的区别 - 我通常喜欢将它们分开,因为H_t返回到输入(循环)并且 Z_t 是输出 - 未在图中显示)
它与 X_t 的尺寸相同吗?
否。它可以是任何不同的形状。您需要将其指定为Tensorflow。这是 num_units - 输出大小
在代码中查看:
@property
def output_size(self):
return self._num_units
Tensorflow使用Colahs Universe中定义的LSTM单元的实现,如下文所述: