###cifar10のデータセットの読み込みかたについて。
私は「直感Deep Learning」という本を元に勉強を進めているのですが、分からないところがあり質問させていただきました。
それはcifar10のデータセットの読み込みかたについてです。
このgithubのコードのうち、CIFAR10Dataset
というクラスがあります。
python
1class CIFAR10Dataset(): 2 3 def __init__(self): 4 self.image_shape = (32, 32, 3) 5 self.num_classes = 10 6 7 def get_batch(self): 8 (x_train, y_train), (x_test, y_test) = cifar10.load_data() 9 10 x_train, x_test = [self.preprocess(d) for d in [x_train, x_test]] 11 y_train, y_test = [self.preprocess(d, label_data=True) for d in 12 [y_train, y_test]] 13 14 return x_train, y_train, x_test, y_test 15 16 def preprocess(self, data, label_data=False): 17 if label_data: 18 # convert class vectors to binary class matrices 19 data = keras.utils.to_categorical(data, self.num_classes) 20 else: 21 data = data.astype("float32") 22 data /= 255 # convert the value to 0~1 scale 23 shape = (data.shape[0],) + self.image_shape # add dataset length 24 data = data.reshape(shape) 25 26 return data
この中のpreprocess
という関数で
python
1shape = (data.shape[0],) + self.image_shape # add dataset length
という文があるのですが、なぜこんなことをしているのかがわかりません。
引数で渡されるdata
はすでに(32, 32, 3)
の形状を持つデータを二つ(x_train, x_testのこと)持つリストのはずですし、ならばdata.shape[0]
は2をさすはずで、それに(32, 32, 3)
を入れる?などと考えてしまいます。
コードには# add dataset length
などと書かれていますが、何をいいたいのかさっぱりです。
なぜこんなことをしているのか・・・どなたか説明していただけないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/21 08:20