私は私のコードを実行すると、私は次のメッセージと値のエラーを取得:(ラザニア)とValueError:入力次元不整合
ValueError: Input dimension mis-match. (input[0].shape[1] = 1, input[2].shape[1] = 20)
Apply node that caused the error: Elemwise{Composite{((i0 + i1) - i2)}}[(0, 0)](Dot22.0, InplaceDimShuffle{x,0}.0, InplaceDimShuffle{x,0}.0)
Toposort index: 18
Inputs types: [TensorType(float64, matrix), TensorType(float64, row), TensorType(float64, row)]
Inputs shapes: [(20, 1), (1, 1), (1, 20)]
Inputs strides: [(8, 8), (8, 8), (160, 8)]
Inputs values: ['not shown', array([[ 0.]]), 'not shown']
Outputs clients: [[Elemwise{Composite{((i0 * i1)/i2)}}(TensorConstant{(1, 1) of 2.0}, Elemwise{Composite{((i0 + i1) - i2)}}[(0, 0)].0, Elemwise{mul,no_inplace}.0), Elemwise{Sqr}[(0, 0)](Elemwise{Composite{((i0 + i1) - i2)}}[(0, 0)].0)]]
私のトレーニングデータは、このような..
としてエントリーの行列であります[ 815.257786 320.447 310.841]
そして、私は私のトレーニング機能に入力するよバッチがの形状を有している(BATCH_SIZE、3)とタイプTensorType(のfloat64、マトリックス)
私のニューラルネットは非常に簡単です:
self.inpt = T.dmatrix('inpt')
self.out = T.dvector('out')
self.network_in = nnet.layers.InputLayer(shape=(BATCH_SIZE, 3), input_var=self.inpt)
self.l0 = nnet.layers.DenseLayer(self.network_in, num_units=40,
nonlinearity=nnet.nonlinearities.rectify,
)
self.network = nnet.layers.DenseLayer(self.l0, num_units=1,
nonlinearity=nnet.nonlinearities.linear
)
私の損失関数は次のとおりです。
pred = nnet.layers.get_output(self.network)
loss = nnet.objectives.squared_error(pred, self.out)
loss = loss.mean()
私は次元のミスマッチを取得しています理由として少し困惑しています。私は正しい入力とラベルの型を(記号変数ごとに)渡しています。入力データの形状は、私がInputLayerに与えている予想される 'shape'パラメータに対応しています。バッチサイズを指定してバッチサイズを指定すると、ネットワークが問題なくトレーニングでき、エラーメッセージのinput [2] .shape [1]値が私のバッチサイズ。私は機械学習のために新しく、どんな助けも大いに評価されるでしょう!