我已经使用 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') 格式。
我真的很想知道我们如何将二维数组转换为上述所需格式。或者任何其他方式可以解决这个问题?