【问题标题】:LSTM Model Not Learning When Labels Are Encoded编码标签时 LSTM 模型不学习
【发布时间】:2019-11-28 15:08:07
【问题描述】:

我正在使用 LSTM 进行分类。目前有两个标签。 在我将标签从 int 更改为一个热编码器之前,我的模型运行良好。

旧代码(工作):

if i%2 == 0 :
   targets=targets.append({'seq_id':counter,'val':1},ignore_index=True)
else :
   targets=targets.append({'seq_id':counter,'val':-1},ignore_index=True) 

...

model.add(LSTM(int(num_features*4),input_shape=(num_rows,num_cols),  return_sequences=True))
model.add(LSTM(int(num_features*4),   dropout=0.5, recurrent_dropout=0.5))
model.add(Dense(1, activation='sigmoid'))

新代码(不工作 - 停留在 val_acc=0.5)

if i%2 == 0 :
   targets=targets.append({'seq_id':counter,'val':'bic'},ignore_index=True)
else :
   targets=targets.append({'seq_id':counter,'val':'reno'},ignore_index=True)
...

targets = targets.values[:,1]
encoder = LabelEncoder()
encoder.fit(targets)
encoded_Y = encoder.transform(targets)
targets = np_utils.to_categorical(encoded_Y)

...

model.add(LSTM(int(num_features*4),input_shape=(num_rows,num_cols),  return_sequences=True))
model.add(LSTM(int(num_features*4),   dropout=0.5, recurrent_dropout=0.5))
model.add(Dense(2, activation='sigmoid')) #That line Changed

【问题讨论】:

    标签: classification lstm one-hot-encoding


    【解决方案1】:

    如果你在做 one-hot encoding,那么你应该将最后一个 Dense 层的激活更改为 softmax。

    【讨论】:

      【解决方案2】:

      我将损失函数更改为 categorical_crossentropy,它起作用了。

      【讨论】:

        猜你喜欢
        • 2021-01-06
        • 1970-01-01
        • 2016-02-25
        • 1970-01-01
        • 2018-10-27
        • 2020-10-07
        • 1970-01-01
        • 2018-11-04
        • 2020-02-29
        相关资源
        最近更新 更多