【问题标题】:Keras LSTM input dimensions with one hot text embedding带有一个热文本嵌入的 Keras LSTM 输入维度
【发布时间】:2016-12-21 04:47:16
【问题描述】:

我有 70k 个文本样本,我使用 Keras 的“one hot”预处理嵌入了这些样本。这给了我一个 [40, 20, 142...] 的数组,然后我将其填充为 28 的长度(最长的样本长度)。我要做的就是将这些值预测为某个分类标签(比如说 0 到 5)。当我训练模型时,我无法获得超过 -.13% 的准确度(目前我的错误是 this 我已经尝试了很多方法来传递输入)。

This is my data 目前只是想创建一个简单的 LSTM。同样,我的数据是 X -> [长度为 28 个整数值,嵌入] 和 Y -> [1 个长度为 3 的整数,(100、143 等)]。知道我做错了什么吗?我问了很多人,但没有人能够提供帮助。这是我的模型的代码......有什么想法吗? :(

optimizer = RMSprop(lr=0.01) #saw this online, no idea
model = Sequential()
model.add(Embedding(input_dim=28,output_dim=1,init='uniform')) #28 features, 1 dim output?
model.add(LSTM(150)) #just adding my LSTM nodes
model.add(Dense(1)) #since I want my output to be 1 integer value

model.compile(loss='sparse_categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
print(model.summary())

编辑:

使用model.add(Embedding(input_dim=900,output_dim=8,init='uniform')) 似乎有效,但准确性仍然没有提高,我不知道该怎么办。

【问题讨论】:

    标签: python machine-learning neural-network deep-learning keras


    【解决方案1】:

    我有两个建议。

    1. 也对目标变量 (y) 使用一种热表示。如果将 Y 设为整数,则将成为回归问题。只有当你给出一个热编码时,它才会成为一个分类问题。
    2. 当您有大量文本时尝试 word2vec 嵌入,而不是一个热嵌入。
    
    optimizer = RMSprop(lr=0.01) 
    embedding_vecor_length = 32
    max_review_length = 28
    nb_classes= 8
    model = Sequential()
    model.add(Embedding(input_dim=900, output_dim=embedding_vecor_length,
                        input_length=max_review_length)) 
    
    model.add(LSTM(150))
    
    #output_dim is a categorical variable with 8 classes
    model.add(Dense(output_dim=nb_classes, activation='softmax'))
    
    model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
    print(model.summary())
    
    model.fit(X_train, y_train, nb_epoch=3, batch_size=64)
    
    # Final evaluation of the model
    scores = model.evaluate(X_test, y_test, verbose=0)
    print("Accuracy: %.2f%%" % (scores[1]*100))
    
    

    【讨论】:

    • 如果您使用sparse_categorical_crossentropy 作为损失函数,您不必对目标变量进行一次热编码。
    猜你喜欢
    • 1970-01-01
    • 2018-02-10
    • 2018-06-16
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2018-01-03
    • 2017-07-25
    相关资源
    最近更新 更多