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 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次元配列から上記の必要な形式にこの変換を行う方法を知りたいです。または、この問題に対処できる他の方法はありますか?

4

1 に答える 1

0

私の問題を解決するために、2D セットの画像 (1000 x 3750) を手動で 4D 配列に変換し、列をサンプル数、行と列を画像、チャネル数 (1000 x 25 x 150×1)。この変換後、正常に動作しました。

トレーニング中にpylearn2が明らかに空間自体にこの変更を加えているため、目的に直接役立つpylearn2クラスまたは関数を見つけたいと思っていました。

于 2015-12-28T12:54:26.547 に答える