2017-11-18 5 views
1

neupy를 사용하여 신경망을 만들고 싶습니다. 그러므로 나는 다음과 같은 구조를 consturcted :NeuPy : 도형 문제 입력

내 데이터 때라도 모양입니다
network = layers.join(
        layers.Input(10), 

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

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

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

:

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

내가 사용이 네트워크를 양성하려고 :

model.train(x_train, y_trian) 

나는 때라도 오류 :

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 
) 

당신은

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

layers.Liner(10) > layers.Relu()layers.Relu(10)과 동일하기 때문이다 작동하는 이유는 더 간단 할 수 있습니다. 공식 문서에서 자세히 알아볼 수 있습니다 : http://neupy.com/docs/layers/basics.html#mutlilayer-perceptron-mlp