使用pylearn2模型的预测

时间:2015-12-25 21:21:51

标签: pylearn

我使用pylearn2训练了以下CNN模型。

h1
    Input space: Conv2DSpace(shape=(25, 150), num_channels=1, axes=('b', 0, 1, 'c'), dtype=float64)
    Total input dimension: 3750
h2
    Input space: Conv2DSpace(shape=(11, 73), num_channels=8, axes=('b', 'c', 0, 1), dtype=float64)
    Total input dimension: 6424
h3
    Input space: VectorSpace(dim=1024, dtype=float64)
    Total input dimension: 1024
h4
    Input space: VectorSpace(dim=1024, dtype=float64)
    Total input dimension: 1024
y
    Input space: VectorSpace(dim=1024, dtype=float64)
    Total input dimension: 1024

您可以观察到此CNN的输入示例是尺寸为25 x150的灰色图像。最终输出数量为10,即层“y”的输出维数为10.

我的训练数据集是使用pylearn2中的CSVDataset创建的,我能够训练模型。

但是,我在使用此模型进行预测时遇到问题,我正在尝试使用scripts / mlp文件夹中的predict_csv.py文件进行预测。

问题是predict_csv.py直接将test.csv文件加载到1000 x 3750的2d矩阵中,表示1000个测试示例,每个测试示例各有3750个像素。然而,在预测theano时,期望输入与层'h1'的输入具有相同的格式。发生以下错误:

TypeError: ('Bad input argument to theano function with name "../mlp/predict_csv.py:111"  at index 0(0-based)', 'Wrong number of dimensions: expected 4, got 2 with shape (1000, 3750).')

我猜所需的格式是pylearn2的('b',0,1,'c')格式。

我真的想知道我们如何从二维数组转换为上述所需格式。或者任何其他方式可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

为了解决我的问题,我最终手动将2D图像集(1000 x 3750)转换为4D阵列,其中列为示例数,图像中的行和列,以及通道数(1000) x 25 x 150 x 1)。这次改造后它运作良好。

我希望找到一个直接服务于我的目的的pylearn2类或函数,因为在训练时,pylearn2显然在空间本身进行了这种改变。