1

我已经使用 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 的二维矩阵中,表示 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') 格式。

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

4

1 回答 1

0

为了解决我的问题,我最终手动将 2D 图像集 (1000 x 3750) 转换为 4D 数组,其中列作为示例数、图像中的行和列以及通道数 (1000 x 25 x 150 x 1)。经过这种转变,它工作得很好。

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

于 2015-12-28T12:54:26.547 回答