Cifar-10データセット解析
3094 ワード
cifar-10データセットは機械学習入門2番目に使用されたデータセット(1番目はもちろんMNIST)であり,解析方法を紹介する.
このデータセットには60000枚のカラー画像があり、画像サイズは3チャネルの32*32で、10種類に分けられ、各種類6000枚の図がある.この中には50000枚が訓練に使われ、5つの訓練ロットを構成し、1ロット当たり10000枚の図がある.さらに10000はテストに用いられ、単独で1ロットを構成する.テストバッチのデータは、10クラスの各クラスから取り、各クラスはランダムに1000枚取ります.残りはランダムに並べて訓練バッチを構成した.1つの訓練バッチの各種類の画像は必ずしも同じ数ではないことに注意してください.総じて訓練バッチを見ると、各クラスに5000枚の図があります.データのダウンロード:python,matlab,binary versionはC言語pythonに適用される3つのバージョンがあります.http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
MATLAB: http://www.cs.toronto.edu/~kriz/cifar-10-matlab.tar.gz
bin: http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz
cifar-10データは辞書形式で格納され、keyはdict_keys([b’batch_label’,b’labels’,b’data’,b’filenames’])は、batch_Label、ラベル、画像データ、画像に対応するファイル名.関数の読み込みをクリックします.
取得データ:
3チャンネル32*32のカラー画像であるため、各画像サイズは32*32*3=3072である
配列をカラー画像に再構築するには、次の手順に従います.
元データは配列で格納され,アプリケーションで必要とされるデータの形式(データかrgb画像か)は必要に応じて決定される.
1.cifar-10概要
このデータセットには60000枚のカラー画像があり、画像サイズは3チャネルの32*32で、10種類に分けられ、各種類6000枚の図がある.この中には50000枚が訓練に使われ、5つの訓練ロットを構成し、1ロット当たり10000枚の図がある.さらに10000はテストに用いられ、単独で1ロットを構成する.テストバッチのデータは、10クラスの各クラスから取り、各クラスはランダムに1000枚取ります.残りはランダムに並べて訓練バッチを構成した.1つの訓練バッチの各種類の画像は必ずしも同じ数ではないことに注意してください.総じて訓練バッチを見ると、各クラスに5000枚の図があります.データのダウンロード:python,matlab,binary versionはC言語pythonに適用される3つのバージョンがあります.http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
MATLAB: http://www.cs.toronto.edu/~kriz/cifar-10-matlab.tar.gz
bin: http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz
2.データ解析、Pythonを例に
cifar-10データは辞書形式で格納され、keyはdict_keys([b’batch_label’,b’labels’,b’data’,b’filenames’])は、batch_Label、ラベル、画像データ、画像に対応するファイル名.関数の読み込みをクリックします.
def unPickle(file):
import pickle as pk
with open(file, 'rb') as f:
d = pk.load(f, encoding='bytes')
return d
取得データ:
data = unPickle('data_batch_1')
img = data[b'data']
img.shape # (10000,3072)
3チャンネル32*32のカラー画像であるため、各画像サイズは32*32*3=3072である
3.画像の再構築
配列をカラー画像に再構築するには、次の手順に従います.
img_0 = img[0] #
img_reshape = img_0.reshape(3,32,32)
import PIL.Image as image
import matplotlib.pyplot as plt
r = image.fromarray(img_reshape[0]).convert('L')
g = image.fromarray(img_reshape[1]).convert('L')
b = image.fromarray(img_reshape[2]).convert('L')
img_m = image.merge('RGB',(r,g,b))
plt.imshow(img_m)
plt.show()
重要な説明
元データは配列で格納され,アプリケーションで必要とされるデータの形式(データかrgb画像か)は必要に応じて決定される.