1

単純な逆伝播とワンホット エンコーディングを使用して、多層ニューラル ネットワークで 2D データを 3 つのクラスに分類しようとしています。増分学習をバッチ学習に変更した後、出力が 0 ( [0,0,0]) に収束しました。これは、主に、より多くのデータを使用したり、学習速度を上げたりした場合に発生します。何か別のものを派生させる必要があるのか​​、それともコードにいくつかのバグを作ったのかはわかりません。

for each epoch: #pseudocode
    for each input:
        caluclate hiden neurons activations (logsig)
        calculate output neurons activations (logsig)

        #error propagation   
        for i in range(3):  
            error = (desired_out[i] - aktivations_out[i])
            error_out[i] = error * deriv_logsig(aktivations_out[i])             
        t_weights_out = zip(*weights_out)           
        for i in range(hiden_neurons):  
            sum_error = sum(e*w for e, w in zip(error_out, t_weights_out[i]))               
            error_h[i] =  sum_error * deriv_logsig(input_out[i])

        #cumulate deltas             
        for i in range(len(weights_out)):                               
            delta_out[i] = [d + x * coef * error_out[i] for d, x in zip(delta_out[i],        input_out)]               
        for i in range(len(weights_h)):
            delta_h[i] = [d + x * coef * error_h[i] for d, x in zip(delta_h[i], input)]

    #batch learning after epoch
    for i in range(len(weights_out)):                               
            weights_out[i] = [w + delta for w, delta in zip(weights_out[i], delta_out[i])]
    for i in range(len(weights_h)):
            weights_h[i] = [w + delta for w, delta in zip(weights_h[i], delta_h[i])]
4

1 に答える 1