从千层面(蟒蛇深度神经网络框架)获取输出
我从官方的烤宽面条加载了mnist_conv.py示例。从千层面(蟒蛇深度神经网络框架)获取输出
在和,我想预测我自己的例子。我看到“lasagne.layers.get_output()”应该处理来自官方文档的numpy数组,但它不起作用,我无法弄清楚我该怎么做。
这里是我的代码:
if __name__ == '__main__':
output_layer = main() #the output layer from the net
exampleChar = np.zeros((28,28)) #the example I would predict
outputValue = lasagne.layers.get_output(output_layer, exampleChar)
print(outputValue.eval())
,但它给了我:
TypeError: ConvOp (make_node) requires input be a 4D tensor; received "TensorConstant{(28, 28) of 0.0}" (2 dims)
我明白,它需要一个四维张量,但我没有任何想法如何纠正它。
你能帮我吗?谢谢
首先,您尝试将一个“图片”传递到您的网络,因此它的尺寸为(256,256)
。
但是它需要一个3维数据的列表,即图像,它在theano中被实现为4D张量。
我没有看到您的完整代码,您打算如何使用烤宽面条界面,但是如果您的代码编写得当,从我目前看到的情况来看,我认为您应该先将您的(256,256)
数据转换为单一通道像(1,256,256)
这样的图像,然后通过使用更多的(1,256,256)
列表中的数据来列表,例如[(1,256,256), (1,256,256), (1,256,256)]
,或者从[(1,256,256)]
这个单例中列出一个列表。 先前你得到,然后通过(3,1,256,256),后一个(1,1,256,256)4D张量,这将被烤宽面界面接受。
正如您的错误消息中所写,预计输入是4D张量,形状为(n_samples, n_channel, width, height)
。在MNIST情况下,n_channels
是1,以及width
和height
是28.
但是正在输入2D张量,形状(28, 28)
的。您需要添加新的坐标轴,您可以用exampleChar = exampleChar[None, None, :, :]
exampleChar = np.zeros(28, 28)
print exampleChar.shape
exampleChar = exampleChar[None, None, :, :]
print exampleChar.shape
输出
(28, 28)
(1, 1, 28, 28)
注意做到:我认为你可以使用np.newaxis
,而不是None
添加一个轴。并且exampleChar = exampleChar[None, None]
也应该工作。
该示例是一个空白图像?因为np.zeros((28,28))意味着。 – Geeocode
你在输入形状中设置了什么 – Geeocode
是的,因为只是一个例子。我会用我的意图使用其他阵列。 – Jlearner