質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Q&A

解決済

1回答

1834閲覧

cifar10のデータセットの読み込みかたについて。

hood

総合スコア351

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

0グッド

0クリップ

投稿2019/03/20 01:18

###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などと書かれていますが、何をいいたいのかさっぱりです。

なぜこんなことをしているのか・・・どなたか説明していただけないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

cifar10 のデータセットは
(データ数, 3072)
の配列で提供されておりますので

Python

1shape = (data.shape[0],) + self.image_shape # add dataset length

によってshape の値
(データ数,32,32,3)
を得ることができますので、この値でもとのデータをreshape()しているだけかと思います。

投稿2019/03/20 03:24

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hood

2019/03/21 08:20

回答ありがとうございます! 少し精神的疲れがあったもので、返信遅れてすいません・・・ なるほど・・・cifar10のデータの形が配列だったとは盲点でした。 データ自体をよく調べれば、質問せずとも解決できたことですね。今度からそういったこともきちんと確認していきたいと思います!! 簡潔な説明できちんと理解することができました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問