GANでデータセットを作るために、Numpyのreshapeを使う方法

画像pngデータを活用して、データセットを作るために必要だったreshapeの使い方を紹介したいと思います。(違うやり方もあると思います。)

以前、reshapeの基本的な使い方は下記で記載しました。

本記事の操作としては、下記記事で作成したデータセットを基に話を進めていきます。

画像データは、1つの画像に対して、( 350 × 350 ) の配列に格納された画像データが生成出来ました。

しかし、機械学習をしていく際に、
1つの画像が1つのndarray型に入っている必要があります。

(もしかしたら、行と列が別々の配列でも良い可能性がありますが、今のところ学習させる際には、1つの画像が、1つの配列に入っている方がススメやすいと思います。)

もう少し説明します。
上記で作ったデータを見ていきます。

training_data.shape

(3, 350, 350)

3枚の画像が、350×350のサイズデータとして存在している。ということですね。

機械学習していく際には、( 画像個数, X )といったデータ型にする必要があります。
ここで Numpy reshapeを使います。
※X = 1次元の画像データ

batchdata = training_data.reshape(3,122500)
#122500 = 350 × 350
batchdata.shape

(3, 122500)

こういったカタチで、機械学習する際に必要なデータ型になりました。

このデータって、変換されてしまったら画像データとして存在しないのでは?と思うかもしれません。確認してみましょう。

一度、reshapeして、変換したデータを、元に戻してみます。

batchReverse = batchdata.reshape(3,350, 350)

for p in batchReverse:
  plt.imshow(p, cmap="gray")
  plt.show()

実行してみると、元の画像が表示されます。

ここで、疑問なのは、データの変換される順番とかが決まっているのか?
ということです。
いま試してみたのは、同じ操作をもとに戻しただけですが、これが複雑な操作の後に、戻そうと思った際に、どうなるのか。疑問は深まるばかりです。