画像の順序を切り替える方法を理解することはできません。画像は(x、x、3)形式で読み取られますが、theanoでは(3、x、x)形式である必要があります。 numpy.array([img[:,:,i] for i in range(3)])
で順序を変えてみました
私はそれが仕事を完了すると思いますが、それはbothく、元の画像を取り戻すためにそれを逆にする方法を見つけることができません。
numpy.rollaxis を使用して、軸3を位置1に移動できます(次元0としてバッチサイズがあると考えてください)。
np.rollaxis(imagesArray, 3, 1)
ただし、kerasを使用している場合は、構成を変更するか、レイヤーごとに定義することをお勧めします。 Keanoを使用している場合、Theanoは何も必要としません。
Kerasは、個々のレイヤーごとに定義できるほか、チャンネルを最初に、または最後にチャンネルを設定できるため、データを変更する必要はありません。
keras.json
ファイルを見つけて変更します。ファイルは通常、OSに応じてC:\Users\yourusername\.keras
または~/.keras
にインストールされます。
"image_data_format": "channels_last"
を"channels_first"
に、またはその逆に変更します。
通常、「channels_last」での作業は、最後の軸でのみ機能する他の(畳み込みではない)関数が大量にあるため、それほど面倒ではありません。
Keras documentation には、data_format
パラメーターを含む、レイヤーのパラメーターに関するすべての情報が含まれています。
@Qualiaのコメントに同意します。 np.moveaxis(a、source、destination) を理解する方が簡単です。これは仕事をします:
x = np.zeros((12, 12, 3))
x.shape
#yields:
(12, 12, 3)
x = np.moveaxis(x, -1, 0)
x.shape
#yields:
(3, 12, 12)
x = np.zeros((12, 12, 3))
y = np.rollaxis(x, 2, 0)
y.shape
(3, 12, 12)