我目前正试图重现以下文章的结果。
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
我使用keano和theano后端。在文章中他谈到了控制最终softmax层的温度以提供不同的输出。如何更改Keras中softmax输出的温度
温度。我们也可以在采样过程中使用Softmax 的温度。将温度从1降低到某些较低的数字(例如0.5)使得RNN更有信心,但其样本中也更保守。相反,较高的温度将使 更具多样性,但会以更多错误为代价(例如拼写错误, 等)。特别是,设置温度非常接近零将给保罗格雷厄姆可能说的最有可能的事情:
我的模型如下。
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新手。
最后一个与'np.random.choice(len(a),p = a)'有什么不同? – danijar
这不是标准温度的softmax,如下所示:https://en.wikipedia.org/wiki/Softmax_function(在强化学习部分)。为什么在除以温度之前是否应用了日志? –