我目前正在尝试重现以下文章的结果。
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
我正在使用带有 theano 后端的 Keras。在文章中,他谈到了控制最终 softmax 层的温度以提供不同的输出。
温度。我们还可以在采样期间使用 Softmax 的温度。将温度从 1 降低到某个较低的数字(例如 0.5)使 RNN 更加自信,但在其样本中也更加保守。相反,更高的温度会带来更多的多样性,但代价是更多的错误(例如拼写错误等)。特别是,将温度设置得非常接近于零会给出 Paul Graham 最有可能说的话:
我的模型如下。
model = Sequential()
model.add(LSTM(128, batch_input_shape = (batch_size, 1, 256), stateful = True, return_sequences = True))
model.add(LSTM(128, stateful = True))
model.add(Dropout(0.1))
model.add(Dense(256, activation = 'softmax'))
model.compile(optimizer = Adam(),
loss = 'categorical_crossentropy',
metrics = ['accuracy'])
我能想到的调整最终密集层温度的唯一方法是获取权重矩阵并将其乘以温度。有谁知道更好的方法吗?此外,如果有人发现我设置模型的方式有任何问题,请告诉我,因为我是 RNN 的新手。