В настоящее время я пытаюсь воспроизвести результаты следующей статьи.
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
Я использую Keras с бэкэндом theano. В статье он рассказывает об управлении температурой конечного слоя softmax, чтобы дать разные результаты.Как изменить температуру выхода softmax в Keras
Температура. Мы также можем играть с температурой 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 (в разделе обучения усилению). Почему применяется лог, прежде чем делить на температуру? –