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 x 150 の灰色の画像であることがわかります。最終的な出力数は 10 です。つまり、レイヤー 'y' の出力次元は 10 です。
私のトレーニング データセットは、pylearn2 の CSVDataset を使用して作成され、モデルをトレーニングできます。
ただし、このモデルを使用して予測を行う際に問題があり、scripts/mlp フォルダーにある predict_csv.py ファイルを使用して実行しようとしています。
問題は、predict_csv.py が test.csv ファイルを、それぞれ 3750 ピクセルの 1000 個のテスト例を表す 1000 x 3750 の 2 次元マトリックスに直接ロードすることです。ただし、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') 形式だと思います。
2次元配列から上記の必要な形式にこの変換を行う方法を知りたいです。または、この問題に対処できる他の方法はありますか?