hereのようにActor-Criticメソッドのネットワークを構築しようとしています。具体的には、ポリシーとバリュー機能のために、最後に完全に接続されたレイヤーとReLUアクティベーションを2つの出力レイヤーに接続しようとしています。しかし、私は小さなdnnのグラフモデルでこれを行う方法をドキュメントから理解できません。tiny-dnnでレイヤーを複数の出力レイヤーに接続する方法は?
(これは間違っている)私が試した何
(編集を参照してください):
layers::input in(size_inputs);
layers::fc h1(size_inputs, size_hidden);
layers::fc h2(size_hidden, size_hidden);
layers::fc h3(size_hidden, size_hidden);
layers::fc h4(size_hidden, size_hidden);
layers::fc out_policy(size_hidden, size_ouputs);
layers::fc out_value(size_hidden, 1);
activation::leaky_relu activation_h;
activation::softmax activation_out_policy;
layers::linear activation_out_value(1);
auto &t1 = in << h1 << activation_h;
auto &t2 = t1 << h2 << activation_h;
auto &t3 = t2 << h3 << activation_h;
auto &t4 = t3 << h4 << activation_h;
auto &t5 = t4 << (out_policy,out_value);
construct_graph(m_network, {&in}, {&out_policy, &out_value});
は(コネクト機能に "範囲外ベクトル添字を" エラーを与える、自動out_shape =頭部」で> < <オペレータへの最後の呼び出し時にout_shape()[head_index];」
編集:ああ、私は馬鹿ですが、文書が完全な例を提供する可能性があります。まず、ネットワークコンポーネントの寿命は、ネットワーク自体の存続期間と同じである必要があります。明らかではない。第二に、これは実際には、ある点まで動作します。実行時に2つの出力を生成するネットワークを構築しますが、softmax出力はすべて間違っています。負の数を返します。
auto &t1 = in << h1 << activation_h;
auto &t2 = t1 << h2 << activation_h;
auto &t3 = t2 << h3 << activation_h;
auto &t4 = t3 << h4 << activation_h;
auto &t5 = t4 << out_policy;
auto &t6 = t4 << out_value;
construct_graph(m_network, {&in}, {&out_policy, &out_value});
shared_ptrsを<<演算子で接続することはできません。 '<< << h1 << activation_h >>のようにすべてのポインタを逆参照してみてください。 – MaxEd
ありがとう、少し進歩しました。コンパイルされますが、グラフは作成されません。私は新しい質問を提起します。 – user1305541