में सॉफ्टमैक्स आउटपुट के तापमान को कैसे बदलें, मैं वर्तमान में निम्न आलेख के परिणामों को पुन: उत्पन्न करने का प्रयास कर रहा हूं।
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
मैं थानो बैकएंड के साथ केरा का उपयोग कर रहा हूं। लेख में वह विभिन्न आउटपुट देने के लिए अंतिम सॉफ्टमैक्स परत के तापमान को नियंत्रित करने के बारे में बात करता है।केरास
तापमान। नमूनाकरण के दौरान हम सॉफ़्टमैक्स के तापमान के साथ भी खेल सकते हैं। 1 से कम संख्या (उदा। 0.5) से तापमान को कम करना आरएनएन को अधिक आत्मविश्वास बनाता है, लेकिन इसके नमूने में रूढ़िवादी भी अधिक है। इसके विपरीत, उच्च तापमान अधिक विविधता देगा लेकिन अधिक गलतियों की लागत पर (जैसे वर्तनी की गलतियों, आदि)। विशेष रूप से, शून्य के बहुत करीब तापमान देता है जो पॉल ग्राहम कह सकता है:
मेरा मॉडल निम्नानुसार है।
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'])
एक ही रास्ता मैं अंतिम घने परत के तापमान को समायोजित करने के लिए वजन मैट्रिक्स हो और तापमान से गुणा किया जाएगा सोच सकते हैं। क्या किसी को ऐसा करने का बेहतर तरीका पता है? अगर कोई मॉडल को सेटअप करने के तरीके में कुछ भी गलत देखता है तो मुझे बताएं क्योंकि मैं आरएनएन के लिए नया हूं।
क्या अंतिम 'np.random.choice (लेन (ए), पी = ए) से अलग है? – danijar
यह तापमान के साथ मानक सॉफ्टमैक्स नहीं है जैसा कि यहां परिभाषित किया गया है: https: //en.wikipedia.org/wiki/Softmax_function (सुदृढीकरण सीखने के अनुभाग में)। तापमान से विभाजित होने से पहले एक लॉग लागू क्यों किया जा रहा है? –