【问题标题】:LSTM with TFIDF as input, dimension error以 TFIDF 作为输入的 LSTM,尺寸误差
【发布时间】:2020-06-23 12:21:56
【问题描述】:

我正在尝试以 TFIDF 作为输入来运行 LSTM,但出现错误。我有 TFIDF,每个条目都有 11915 个维度

代码如下:

## Creating model
model=Sequential()
model.add(Bidirectional(LSTM(100, input_shape=(1, 11915),return_sequences=True)))
model.add(Dropout(0.3))
model.add(Dense(1,activation='sigmoid'))
model.build(input_shape=(1, 11915))
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
print(model.summary())

错误如下 层 bidirectional_27 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:[1, 11915]

我是这个领域的新手,任何帮助将不胜感激。如果有人编写一个虚拟代码来在这样的输入上运行双向 LSTM,那就太好了

我的输入是 10229*11915 的 tfidf。我想在 TFIDF 上使用 LSTM 作为输入进行假新闻检测

【问题讨论】:

    标签: machine-learning keras deep-learning lstm tf-idf


    【解决方案1】:

    这是一个完整的工作示例

    # create fake data
    n_sample = 10229
    X = np.random.uniform(0,1, (n_sample,11915))
    y = np.random.randint(0,2, n_sample)
    
    # expand X to 3D
    X = X.reshape(X.shape[0],1,X.shape[-1])
    
    model=Sequential()
    model.add(Bidirectional(LSTM(100, return_sequences=False), input_shape=(1, 11915)))
    model.add(Dropout(0.3))
    model.add(Dense(1, activation='sigmoid'))
    
    model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
    print(model.summary())
    
    model.fit(X,y, epochs=3, batch_size=256)
    

    出现错误是因为您可能没有正确管理您的数据。还要注意正确定义第一层并 return_sequences=False 因为你的输出是 2D

    【讨论】:

      【解决方案2】:

      您想在Bidirectional 层中指定您的input_shape

      model.add(Bidirectional(LSTM(100, return_sequences=True), input_shape=(1, 11915)))
      

      【讨论】:

        猜你喜欢
        • 2018-09-18
        • 2019-06-05
        • 2021-06-04
        • 2017-08-30
        • 1970-01-01
        • 2019-02-04
        • 2020-08-31
        • 1970-01-01
        相关资源
        最近更新 更多