### (Lasagne) 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: 18Inputs 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, matrix)

我的神经网络非常简单:

    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’参数相对应。我认为问题出在如何指定批次大小上,因为当我使用批次大小为1时,我的网络可以正常训练,并且错误信息中的input[2].shape[1]值就是我的批次大小。我对机器学习还比较新手,任何帮助都将不胜感激!


回答:

原来问题出在我的标签维度设置错误。

我的数据形状为:

x_train.shape == (batch_size, 3)y_train.shape == (batch_size,)

我的网络的符号输入为:

self.inpt = T.dmatrix('inpt')self.out  = T.dvector('out')

通过重塑y_train,我解决了这个问题。然后我将符号输出变量改为矩阵以适应这些变化。

y_train = np.reshape(y_train, y_train.shape + (1,))# y_train.shape == (batch_size, 1)self.out = T.dmatrix('out')

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注