dポイントプレゼントキャンペーン実施中!

『ゼロから作るディープラーニング』で躓いています…アドバイスお願いします。

こんにちは。
私はこれまでプログラミングとは無縁だったのですが、ディープラーニングを通じてPythonを扱えるようになったり人工知能を理解できるようになりたいと思い、書籍『ゼロから作るディープラーニング』を手に取った次第です。

現在、当書籍の第3章で躓いています。
ここあたりから、読んでいてもちゃんと納得することができず、なんとなくてしか読み進められなくなってきており、進み具合が著しく低下しております。

例えば、
def get_data():
(x_train, t_train), (x_test, t_test) = \
load_mnist(normalize=True, flatten=True)
return x_test, t_test
は、MNISTデータセットから画像のデータをx_test, t_testとして取得する関数なんだなというふうになんとなく理解はしているつもりなのですが、一行目の()の表記が何を意味しているのか、また=\とはどういうことなのか、またなぜこの関数でデータを取得できるのかということが理解しきれません。

またその直後の、
def init_network():
with open("sample_weight.pkl", 'rb') as f:
network = pickle.load(f)
return network
は、データをfとして開き、それをloadメソッドなるものを用いて変数に代入し、それを表記する関数なんだなとなんとなく理解しているのですが、なぜopen関数で上述の表記をすることで「pickleファイルのsample_weight.pklに保存された学習済みの重みパラメーターを読み込」むことになるのか、'rb'とはなにか、といったことが理解しきれません。

このように途中で「なぜなんだろう」と疑問に思ってしまうため読むスピードが遅くなってしまうことや、最終的にわからないためになんとなくやり過ごしてしまい理解が曖昧になってしまうということが現在の悩みです。

他の皆様はこのような書籍をどれくらい理解しつつ読むのでしょうか。
私がお書きした疑問点などは、言ってしまえば常識の範疇なのでしょうか。
私にはまだ当書籍は早かったのでしょうか。
そうだとしたら、どのような学習が良いと思われますか。

質問といたしまして、お書きしましたコードに関する具体的なアドバイスや、上述の疑問点を含めまして今後の学習についてのアドバイスなどを頂けましたら嬉しいです!!

どうぞよろしくお願いします!!

A 回答 (3件)

プログラミングの経験なしということですので、疑問はもっともかと思います。


学習としてはpythonを使っての基本的なプログラミング習得が必要と思われます。
疑問とされている事はどのプログラミング言語でもほぼ共通の知識ですので、
プログラミングを知っている人にとっては普通に受け入れられるものです。
他の方の書かれている書籍を当たられてもいいですし、
pythonは人気のある言語のひとつなのでネット上でも沢山あると思います。
    • good
    • 1
この回答へのお礼

ありがとうございます!!
やはり常識のようなものなのですね!!
もう少し基礎的なところから学習していこうと思います!!

ありがとうございました!

お礼日時:2018/12/22 12:44

独学で、機械学習勉強しています。

No.1の方が言われている様に、レベルが高いですね。
質問者の方がつまづいているところ、私もつまづきました。
結構、何冊も本を買って、サンプルプログラムを動かしながら、理解しているので、貴方の疑問は間違っていないと思います。

【私のおすすめの本】
① Pythonで動かして学ぶ! 機械学習の教科書、伊藤真著、翔泳社
② 機械学習と深層学習、小高知宏著、オーム社(小高さんの本はプログラムコメントが多く、分かり易い)
③ PythonによるAI・機械学習・深層学習アプリのつくり方、クジラ飛行机、ソシム(良い本ですけど、説明が少ないかも)

上記の本などで、ある程度、理解してからでないと、難しいと思います。
斎藤先生の本、すごくいい本なのですが、高等テクニックを使っていて、初級は難しい。です

【質問の疑問点箇所】
1点目
(x_train, t_train), (x_test, t_test) = \
load_mnist(normalize=True, flatten=True)

"\"は2行に渡って一行分を各ための記号なので、
(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, flatten=True)

と同じ意味です。MNISTのデータは手書きの画像なので、1x28x28の画像サイズになります。
それを、取り込んでから、機械学習を行なうために、0~1の1行784(28x28)列に直す作業を、1行で全て、やっているので
分かりにくいです。

2点目
>「pickleファイルのsample_weight.pklに保存された学習済みの重みパラメーターを読み込」
自分のプログラムで、trainを使って、testで正解率を計算するなら、上記のpickleファイルは必要ありません。
プログラム実行で、trainで学習した重みを使って、testの性能をひょうかするため。
一度、train学習した重みをpikleに保存しておくと、test性能を検証する際、毎回、学習させる必要をなくすために、pickleをload
します。'rb'はその取込みの際のread, バイナリー読込み等の設定だったと思います('rb'の説明は不十分ですみません)

なので、いきなり、pikcleは結構、きついと思います。

順序としては、
パーセプトロン、バックプロパゲーション

MNIST (0 ~9の手書き文字認識)

この辺りで、kerasというものの理解

Cifar10 (10種類の画像識別)

Cifar100(100種類の画像識別)

長文になりますので、ここで、終わらせて頂きます。
回答になっていない様でしたら、補足下さい。機械学習は奥が深いので、最初は中々、難しいですよ。焦らずに、頑張って下さい。
    • good
    • 1
この回答へのお礼

ありがとうございます!!
独学で学習を始められた方からのアドバイスとあって、大変ためになります!!
やはりまだ私には早いのですね…!!ご紹介下さいました書籍、ぜひ書店で見させていただきます!!
また今後の学習についても方針を頂けまして、本当にありがとうございます!!
じっくり学習していきます!


個別の点につきましても、ありがとうございます。
やはりある程度は常識が必要なのですね!
それらの点につきましても、これから身につけていこうと思います。

ありがとうございました!

お礼日時:2018/12/22 12:43

それは、初心者がいきなり読むにはレベルが高すぎる本ですね。


オライリー本は初心者向けの本もありますが、一般的には初心者には難しいものが多いです。

「初めてのTensorFlow 数式なしのディープラーニング」
「詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理」

の2冊をまず読みとおした後、それを読むのがいいみたいです。
    • good
    • 1
この回答へのお礼

ありがとうございます!!
私には少し難しかったのですね!!
本を挙げていただきましてありがとうございます!!
ぜひ書店で見てみます!

お礼日時:2018/12/22 11:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!