使用Keras将自动编码器与时间分布层堆叠时发生断言错误

2024-05-19 19:56:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Keras来实现一个自动编码器,后面跟着一个TimeDistributed层。然而,我遇到了一个AssertionError。在

回溯日志:

Traceback (most recent call last):
  File "test3.py", line 115, in <module>
    model.fit(x_train, y_train, batch_size=batch_size, validation_split=0.05, nb_epoch=1, shuffle=True)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/keras/engine/training.py", line 1022, in fit
    self._make_test_function()
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/keras/engine/training.py", line 686, in _make_test_function
    **self._function_kwargs)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/keras/backend/theano_backend.py", line 528, in function
    return Function(inputs, outputs, updates=updates, **kwargs)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/keras/backend/theano_backend.py", line 514, in __init__
    **kwargs)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/compile/function.py", line 322, in function
    output_keys=output_keys)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/compile/pfunc.py", line 480, in pfunc
    output_keys=output_keys)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/compile/function_module.py", line 1827, in orig_function
    output_keys=output_keys).create(
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/compile/function_module.py", line 1507, in __init__
    optimizer_profile = optimizer(fgraph)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/gof/opt.py", line 102, in __call__
    return self.optimize(fgraph)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/gof/opt.py", line 90, in optimize
    ret = self.apply(fgraph, *args, **kwargs)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/gof/opt.py", line 233, in apply
    sub_prof = optimizer.optimize(fgraph)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/gof/opt.py", line 86, in optimize
    self.add_requirements(fgraph)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/tensor/opt.py", line 1434, in add_requirements
    fgraph.attach_feature(ShapeFeature())
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/gof/fg.py", line 566, in attach_feature
    attach(self)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/tensor/opt.py", line 1261, in on_attach
    self.on_import(fgraph, node, reason='on_attach')
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/tensor/opt.py", line 1314, in on_import
    self.set_shape(r, s)
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/tensor/opt.py", line 1113, in set_shape
    shape_vars.append(self.unpack(s[i]))
  File "/home/xiaoyong/xiaoyong/local/lib/python2.7/site-packages/theano/tensor/opt.py", line 1035, in unpack
    assert s_i >= 0
AssertionError

我的模型是:

^{pr2}$

Tags: inpyselfhomelibpackageslocalline
1条回答
网友
1楼 · 发布于 2024-05-19 19:56:26

我收到了同样的错误信息。部分网络的代码大致如下所示。如你所见,我也在使用卷积1d

qenc = Sequential()
qenc.add(Embedding(output_dim=WORD2VEC_EMBED_SIZE, input_dim=vocab_size,
                   input_length=seq_maxlen,
                   weights=[embedding_weights]))
qenc.add(LSTM(QA_EMBED_SIZE, return_sequences=True))
qenc.add(Dropout(0.3))
qenc.add(Convolution1D(QA_EMBED_SIZE // 2, 5, border_mode="valid"))
qenc.add(MaxPooling1D(pool_length=2, border_mode="valid"))
qenc.add(Dropout(0.3))
qenc.add(Flatten())

我用参数做了一点实验,并在maxpoolg1d层将border_模式从“same”更改为“valid”,修复了这个错误。然后我又回去改变了卷积1D中的边界模式。从建模的角度来看,这可能对您有效,也可能不起作用,但这是我使用的解决方法-希望这有帮助。我的Keras版本是1.0.5。在

相关问题 更多 >