0

複数のクラスで回帰を実行できる nolearn を使用してニューラル ネットワークを構築しようとしています。

例えば:

net = NeuralNet(layers=layers_s,
             input_shape=(None, 2048),
             l1_num_units=8000,
             l2_num_units=4000,
             l3_num_units=2000,
             l4_num_units=1000,
             d1_p = 0.25,
             d2_p = 0.25,
             d3_p = 0.25,
             d4_p = 0.1,
             output_num_units=noutput,
             output_nonlinearity=None,
             regression=True,
             objective_loss_function=lasagne.objectives.squared_error,
             update_learning_rate=theano.shared(float32(0.1)),
             update_momentum=theano.shared(float32(0.8)),
             on_epoch_finished=[
                    AdjustVariable('update_learning_rate', start=0.1, stop=0.001),
                    AdjustVariable('update_momentum', start=0.8, stop=0.999),
                    EarlyStopping(patience=200),
                                    ],
             verbose=1,
             max_epochs=1000)

noutput は、回帰を実行するクラスの数です。これを 1 に設定すると、すべてが機能します。output_num_unit として 26 (ここではクラスの数) を使用すると、Theano ディメンション エラーが発生します。(gemm への引数の次元の不一致 (128,1000)x(1000,26)->(128,1))

Y ラベルは、クラスに対応する継続変数です。Y ラベルを (rows,classes) に再形成しようとしましたが、これは多くの Y ラベルに 0 の値を与える必要があることを意味します (そのクラスの値が不明であるため)。一部の y_labels を 0 に設定せずにこれを行う方法はありますか?

4

1 に答える 1