TypeError:添加的层必须是类Layer的实例。找到:<tensorflow.python.keras.layers.recurrent.LSTM 对象位于 0x00000272F295E
Posted
技术标签:
【中文标题】TypeError:添加的层必须是类Layer的实例。找到:<tensorflow.python.keras.layers.recurrent.LSTM 对象位于 0x00000272F295E508>【英文标题】:TypeError: The added layer must be an instance of class Layer. Found: <tensorflow.python.keras.layers.recurrent.LSTM object at 0x00000272F295E508> 【发布时间】:2020-07-02 11:51:19 【问题描述】:我想用 LSTM 训练一个模型,但我收到以下错误消息:
TypeError:添加的层必须是类Layer的实例。找到:
我看到其他一些人也遇到了同样的问题,但他们的解决方案都不适合我。我需要快速帮助,因为我的截止日期快到了。
请帮忙!
这是我的导入:
import pandas as pd
import os
from os import walk
from os.path import join
import numpy as np
import re
from numpy import array
from numpy import asarray
from numpy import zeros
import nltk
from nltk.stem import PorterStemmer
from nltk.stem import SnowballStemmer
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from tensorflow.keras import models
from keras.preprocessing.text import one_hot
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers.core import Activation, Dropout, Dense
from keras.layers import Flatten
from keras.layers import GlobalMaxPooling1D
from keras.layers.embeddings import Embedding
from sklearn.model_selection import train_test_split
from keras.preprocessing.text import Tokenizer
import matplotlib.pyplot as plt
这里是我的代码:
model = Sequential()
embedding_layer = Embedding(vocab_size, 100, weights=[embedding_matrix], input_length=maxlen , trainable=False)
model.add(embedding_layer)
model.add(LSTM(128))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['acc'])
错误信息:
TypeError Traceback (most recent call last)
<ipython-input-501-6005bb036887> in <module>
2 embedding_layer = Embedding(vocab_size, 100, weights=[embedding_matrix], input_length=maxlen , trainable=False)
3 model.add(embedding_layer)
----> 4 model.add(LSTM(128))
5
6 model.add(Dense(1, activation='sigmoid'))
~\Anaconda3\lib\site-packages\keras\engine\sequential.py in add(self, layer)
131 raise TypeError('The added layer must be '
132 'an instance of class Layer. '
--> 133 'Found: ' + str(layer))
134 self.built = False
135 if not self._layers:
TypeError: The added layer must be an instance of class Layer. Found: <tensorflow.python.keras.layers.recurrent.LSTM object at 0x00000272F295E508>
请帮帮我!
【问题讨论】:
【参考方案1】:类似的问题可以通过以下方式解决:
from tensorflow.keras.layers import LSTM
【讨论】:
【参考方案2】:你是直接从keras导入其他layers
和你的Sequential
模型,但是从错误中可以理解为你的LSTM
层是从tensorflow.keras.layers
导入而不是@ 987654325@。从一个keras或tensorflow导入所有层,错误就会消失。
【讨论】:
嗨。感谢您的快速回复。如何只从 keras 导入 LSTM? 没问题。from keras.layers import LSTM
以上是关于TypeError:添加的层必须是类Layer的实例。找到:<tensorflow.python.keras.layers.recurrent.LSTM 对象位于 0x00000272F295E的主要内容,如果未能解决你的问题,请参考以下文章
TypeError: Layer input_spec 必须是 InputSpec 的一个实例。得到:InputSpec(shape=(None, 128, 768), ndim=3)
keras inceptionV3“base_model.get_layer('custom')”错误ValueError:没有这样的层:自定义
我正在尝试定义 LSTM 并收到错误“TypeError: add() missing 1 required positional argument: 'layer'”