action
を出力し、不適切な候補をフィルタリングするためにfilter
を使用する次のモデルを再生しています。 https://arxiv.org/abs/1702.03274PyTorchの最終レイヤのマスク固有の要素
このモデルでは、最後のsoftmaxレイヤーの後に出力がフィルタリングされます。 action_size==3
と仮定しよう。したがって、高密度の&のasoftmaxレイヤーの出力は以下のようになります。
output: [0.1, 0.7, 0.2]
filter: [0, 1, 1]
output*filter: [0, 0.7, 0.2]
しかしpytorchで、logsoftmax
はNLLLoss
で好ましいです。だから私の出力は以下のようになります。これは意味をなさない。
output: [-5.4, -0.2, -4.9]
filter: [0, 1, 1]
output*filter: [0, -0.2, -4.9]
したがって、pytorochは推奨しません。vanilla Softmax
。特定のアクションを排除するためにマスクを適用するにはどうすればよいですか? バニラソフトマックスでカテゴリクロスエントロピーロス関数がありますか?
このモジュールは、Softmaxとそれ自身の間でLogを計算することを期待するNLLLossでは直接動作しません。代わりにLogsoftmaxを使用してください(より速く、より良い数値プロパティがあります)。 http://pytorch.org/docs/master/nn.html#torch.nn.Softmax