【问题标题】:Keras- Input Layer and Embedding layer errorKeras-输入层和嵌入层错误
【发布时间】:2019-11-13 12:47:25
【问题描述】:

我正在尝试为电视脚本生成制作模型,并且在运行以下模型时,出现输入层和嵌入层错误。 我试过在没有这两行的情况下运行模型,它工作正常。有人可以帮我解决错误吗?

embedding = 300
lstm_size = 128
vocab_size = len(vocab) #8420
seq_len = 100


model = Sequential()
model.add(Input((None, )))
model.add(Embedding(inp, input_dim = vocab_size, output_dim = embedding, 
input_length = 1000))
model.add(LSTM(lstm_size, return_sequences = True, return_state = True))
model.add(LSTM(lstm_size, return_sequences = True, return_state = True))
model.add(LSTM(lstm_size, return_sequences = True, return_state = True))
model.add(Flatten())
model.add(Dense(vocab_size))

TypeError                                 Traceback (most recent call last)
<ipython-input-66-695a9250515c> in <module>
 19 #model = Model(inp, out)
 20 model = Sequential()
---> 21 model.add(Input((None, )))
 22 model.add(Embedding(inp, input_dim = vocab_size, output_dim = embedding, input_length = 1000))
 23 model.add(LSTM(lstm_size, return_sequences = True, return_state = True))

~\Anaconda3\lib\site-packages\tensorflow\python\training\checkpointable\base.py in _method_wrapper(self, *args, **kwargs)
440     self._setattr_tracking = False  # pylint: disable=protected-access
441     try:
--> 442       method(self, *args, **kwargs)
443     finally:
444       self._setattr_tracking = previous_value  # pylint: disable=protected-access

~\Anaconda3\lib\site- packages\tensorflow\python\keras\engine\sequential.py in add(self, layer)
143       raise TypeError('The added layer must be '
144                       'an instance of class Layer. '
--> 145                       'Found: ' + str(layer))
146     self.built = False
147     set_inputs = False

TypeError: The added layer must be an instance of class Layer. Found: Tensor("input_37:0", shape=(?, ?), dtype=float32)


This is coming for the Input layer
and,

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-67-3c663f8df357> in <module>
 20 model = Sequential()
 21 #model.add(Input((None, )))
---> 22 model.add(Embedding(inp, input_dim = vocab_size, output_dim = embedding, input_length = 1000))
 23 model.add(LSTM(lstm_size, return_sequences = True, return_state = True))
 24 model.add(LSTM(lstm_size, return_sequences = True, return_state = True))

TypeError: __init__() got multiple values for argument 'input_dim'

this comes for embedding layer.

【问题讨论】:

  • 你应该包括你的导入以及'inp'是什么。
  • inp = Input((None, ))

标签: python tensorflow keras lstm recurrent-neural-network


【解决方案1】:

输入不是层对象。这就是你得到第一个错误的原因。您不需要通过调用 Sequential() 来传递类似的内容。 Embedding() 可以是你的第一层。

第二个错误是因为您将inp 传递给它。第一个值应该是inpvocab_size,但不能同时是两者。

基本上,

embedding = 300
lstm_size = 128
vocab_size = len(vocab) #8420
seq_len = 100


model = Sequential()
model.add(Embedding(vocab_size, embedding, input_length = 1000))

【讨论】:

    猜你喜欢
    • 2019-04-06
    • 2021-05-20
    • 2017-09-19
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多