Keras 使用真实值作为训练目标的 LSTM 分类器的官方示例?

Posted

技术标签:

【中文标题】Keras 使用真实值作为训练目标的 LSTM 分类器的官方示例?【英文标题】:Keras official example of LSTM classifier using real values for training target? 【发布时间】:2019-04-05 05:17:52 【问题描述】:

从 Keras 文档中的官方示例来看,堆叠 LSTM 分类器使用categorical_crossentropy 作为损失函数进行训练,正如预期的那样。 https://keras.io/getting-started/sequential-model-guide/#examples

但是y_train 值是使用输出实数的numpy.random.random() 播种的,而不是0,1 二进制分类(这是典型的)

y_train 值是否被提升为 0,1 值?

你甚至可以针对0,1 之间的实际值训练这个损失函数吗?

accuracy 那么是如何计算的呢?

令人困惑..不是吗?

from keras.models import Sequential
from keras.layers import LSTM, Dense
import numpy as np

data_dim = 16
timesteps = 8
num_classes = 10

# expected input data shape: (batch_size, timesteps, data_dim)
model = Sequential()
model.add(LSTM(32, return_sequences=True,
               input_shape=(timesteps, data_dim)))  # returns a sequence of vectors of dimension 32
model.add(LSTM(32, return_sequences=True))  # returns a sequence of vectors of dimension 32
model.add(LSTM(32))  # return a single vector of dimension 32
model.add(Dense(10, activation='softmax'))

model.compile(loss='categorical_crossentropy',
              optimizer='rmsprop',
              metrics=['accuracy'])

# Generate dummy training data
x_train = np.random.random((1000, timesteps, data_dim))
y_train = np.random.random((1000, num_classes))

# Generate dummy validation data
x_val = np.random.random((100, timesteps, data_dim))
y_val = np.random.random((100, num_classes))

model.fit(x_train, y_train,
          batch_size=64, epochs=5,
          validation_data=(x_val, y_val))

【问题讨论】:

【参考方案1】:

对于这个例子,y_train 和 y_test 不再是 one-hot 编码,而是每个类的概率。所以它仍然适用于交叉熵。并且我们可以将 one-hot 编码视为概率向量的特例。

y_train[0]
array([0.30172708, 0.69581121, 0.23264601, 0.87881279, 0.46294832,
       0.5876406 , 0.16881395, 0.38856604, 0.00193709, 0.80681196])

【讨论】:

关于cross-entropy的简短介绍

以上是关于Keras 使用真实值作为训练目标的 LSTM 分类器的官方示例?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Keras训练LSTM的初始状态?

Keras每一步的多步LSTM批量训练分类

Keras 在训练分类 LSTM 序列到序列模型时给出 nan

时间序列 Keras LSTM 回显而不是预测

MLP初始化Keras中的LSTM细胞状态

Keras LSTM 训练数据格式