画像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()
実行してみると、元の画像が表示されます。
ここで、疑問なのは、データの変換される順番とかが決まっているのか?
ということです。
いま試してみたのは、同じ操作をもとに戻しただけですが、これが複雑な操作の後に、戻そうと思った際に、どうなるのか。疑問は深まるばかりです。