2017-11-18 19 views
1

neupyを使ってニューラルネットワークを構築したいと思います。 は、したがって、私は、次のアーキテクチャをconsturcted:NeuPy:形状の問題を入力してください

x_train.shape = (32589,10) 
y_train.shape = (32589,1) 

を私が使用してこのネットワークを訓練しようとすると::

network = layers.join(
        layers.Input(10), 

        layers.Linear(500), 
        layers.Relu(), 

        layers.Linear(300), 
        layers.Relu(), 

        layers.Linear(10), 
        layers.Softmax(), 
       ) 

私のデータはfollwoingとして形作られている

model.train(x_train, y_trian) 

私はfollwoingエラーを取得します:

ValueError: Input dimension mis-match. (input[0].shape[1] = 10, input[1].shape[1] = 1) 
Apply node that caused the error: Elemwise{sub,no_inplace}(SoftmaxWithBias.0, algo:network/var:network-output) 
Toposort index: 26 
Inputs types: [TensorType(float64, matrix), TensorType(float64, matrix)] 
Inputs shapes: [(32589, 10), (32589, 1)] 
Inputs strides: [(80, 8), (8, 8)] 
Inputs values: ['not shown', 'not shown'] 
Outputs clients: [[Elemwise{Composite{((i0 * i1)/i2)}}(TensorConstant{(1, 1) of 2.0}, Elemwise{sub,no_inplace}.0, Elemwise{mul,no_inplace}.0), Elemwise{Sqr}[(0, 0)](Elemwise{sub,no_inplace}.0)]] 

この種のデータをマップするにはネットワークをどのように編集する必要がありますか?

ありがとうございました!

答えて

1

あなたのアーキテクチャは1ではなく10の出力を持っています。私はあなたのy_train関数が0-1クラス識別子であると仮定します。もしそうなら、あなたはこれにあなたの構造を変更する必要があるよりも、:

network = layers.join(
    layers.Input(10), 

    layers.Linear(500), 
    layers.Relu(), 

    layers.Linear(300), 
    layers.Relu(), 

    layers.Linear(1), # Single output 
    layers.Sigmoid(), # Sigmoid works better for 2-class classification 
) 

あなたはそれがさらに簡単にすることができlayers.Liner(10) > layers.Relu()layers.Relu(10)と同じであるため、それが動作する理由

network = layers.join(
    layers.Input(10), 
    layers.Relu(500), 
    layers.Relu(300), 
    layers.Sigmoid(1), 
) 

理由があります。公式ドキュメントで詳しく知ることができます:http://neupy.com/docs/layers/basics.html#mutlilayer-perceptron-mlp

関連する問題