マトリョーシカ的日常

ワクワクばらまく明日のブログ。

ターミナルで苦戦するディープラーニング/画像認識への道のりは険しい

f:id:kyokucho1989:20180902053414j:plain
Photo by Michael Shannon

 息子が大切にしていたカブトムシが死んだ。死んだら復活しないよ、ということを伝えた。来年はヘラクレスオオカブトがほしいと言った。ないだろと言うと、あるよと返された。その自信はどこから来るんだ。そうやって夏はフェードアウトしていって、少しだけの秋が訪れる。虫がうるさい。

 ディープラーニングの進捗を週に一度は書かないといけない。
aidiary.hatenablog.com

 またこのサイトのコードを見ながら、CIFAR-10という画像データの認識のやりかたを勉強した。しかしうまくできなかった。たくさんのエラーが生じた。まずはprint構文でだめになった。これは単純に()をつけたら大丈夫だった。次はchainerというのを認識してくれなかった。ターミナルから「pip install chainer」とやってら問題なくなった。けれどそのあとの

RuntimeError: CUDA environment is not correctly set up

 が曲者だった。CUDAというのをインストールしなければならないらしい。エラーメッセージに書かれていたURLへ飛んだ。
GitHub - chainer/chainer: A flexible framework of neural networks for deep learning
さらに飛んだ。
Installation — Chainer 4.4.0 documentation
さらに飛んだ。
Installation Guide — CuPy 5.0.0b4 documentation

 CUDAをインストールするためにはcupyが必要らしかった。しかしcupyを入れようとしたらエラーがでた。

   **************************************************
   *** WARNING: nvcc not in path.
   *** WARNING: Please set path to nvcc.
   **************************************************

 もうわけがわからなかった。ウェブ上でいろんなことを調べたがやっぱりわからなかった。私がやりたいのはターミナルの知識を深めることじゃないんだ。ディープラーニングだ。他の画像素材を探そう。
scikit-learn: machine learning in Python — scikit-learn 0.19.2 documentation
scikit-image: Image processing in Python — scikit-image

 この辺りのやつから頑張って拾いたい。という感じでまったく進展のない記事を書いた。こんなもの誰の役に立つのか、と考えてみたが、たぶん書いてる本人が一番ありがたいと感じるはずだ。未来への自分に向けて発信しよう。

 あと、だれか画像認識の始め方をおしえてください。どこからどんな素材をゲットすればやりやすいですか……?

詳細!Python 3 入門ノート

詳細!Python 3 入門ノート

フリーランスエンジニアの迫さん(@yuki_99_s)がなんか面白そうなことをしていたので質問をした。

f:id:kyokucho1989:20180901041748j:plain

 スーパーボイジャーとかいう歌をずっと聞いている。宝塚だ。ボイジャーってきくとあの宇宙探査機を連想するが、宝塚の人たちが歌ってるそれもそんな意味だろう。「今朝日が地平を染めて僕らは目覚めた/新しい雪の朝に」とかいう出だしでわりと前向きな感情になれる。子供を抱っこしてスーパーボイジャーを歌いながらトントンしていると彼は寝る。寝ない日もある。


 大体の生活は文章になり得て、ただそれを私が行わないだけだ。このまえ、迫さんという人が面白そうなことをやっていた。

 なんというか、彼が提供している動画教材を宣伝すれば、アフィリエイト報酬がもらえるとかいう仕組みを作っているそうだ。A8netなどの大手アフィリエイト代理店は使わずに、迫さんがアフィリエイトサイトをつくる。そうやって、中間マージンを抑える作戦らしい。すごいね。

 DMを送って数日たつと連絡をもらった。わお。試しに登録した。アフィリエイトはちゃんと機能していた。いくつか質問をした。

迫さんへの質問:
本人ついて

Q何者なんですか?

A. 大学在学中にプログラミングを学んでいたら,仕事をガンガン取れるようになったのでそのまま大学を辞めた人です.
今まで3000人以上にプログラミングを教えてきました.
プログラミングに関する電子書籍を販売したり,Udemyという動画教材販売サイトでベストセラーを撮ったりしたことがあります.
僕の実績とかはこちらに書いてあります!
https://www.yukisako.xyz/lp/mail-programming


Q. 大学の専攻は何でしたか?
A. ロボット工学です!ロボットを使った制御のプログラムを書いたり,カメラとロボットの連携プログラムを作っていました.


Q. バイトは何をしてましたか?
A. バイトは今まで5つほど.
・人の視覚情報を使ったアプリの開発バイト
・学校のPC環境を整備するためのバイト
・ロボットとの通信プログラムの開発バイト
・プログラミング初心者向けの教科書を作るバイト
・プログラミングスクールのメンターのバイト
実際にエンジニアとして働きながら,プログラミングを教える実務経験も積んできました.


Q. サークルはなにかやってましたか?
A. サークルは,情報系サークルでプログラミングや開発を行ってきました.


Q. 好きな食べ物 / 嫌いな食べ物はなんですか?
A. 好きな食べ物は串カツとアイスクリーム,嫌いな食べ物は紅生姜ですw

Q. あと半年で卒業という段階で大学を中退したようですが、「もったいない!」とは思いませんでしたか?
A. 一切なかったです!大卒という資格には興味がなかったので.
そもそも,半年間研究に時間を持って行かれて,仕事ができない方がもったいないなと思いました.


Skills Hacksについて
Q. このサービスをつくった動機を教えてください
A. 現在,Twitterのフォロワーさんが1万人以上いて,毎日のように僕のレッスンを受けたいという希望が来ていました.
「お金はいくらでも払うから受けたい!」って人までいたのですが,僕の体は一つしかないので,教材にして多くの人に体験してもらえるようにしました.

Q. 何がつくれるようになれますか?
A. Webアプリケーションが作れるようになります.掲示板アプリとかタスク管理アプリとか,習ったことを発展させればかなりたくさんのものが作れるスキルがつきます.
 
Q. 値段が高すぎませんか?/月額制は考えていますか?
A. 他のプログラミングスクールが40万とか普通にかかる中で,僕の講座は破格の安さだと思っています.
月額制は特に考えていません.

Q. 現在の利用者数は何名ですか?
A. 現在,販売開始前ですが130名の方に受講してもらっています.

Q. 最終的に動画のボリュームはどの程度になりそうですか?
A. 約90本の動画になるかなと予想されます.


自社アフィリエイトシステムについて
Q. どうして自分でアフィリエイトシステムをつくろうと思ったんですか?
A. 既存のアフィリエイトセンターに依頼すると,手数料を取られるのでブロガーさんへの還元率が低くなります.
それだったら,僕が1から作ってブロガーさんへの報酬をあげた方がいいかなと思いまして.

Q. 作るまでにどのくらい時間がかかりましたか?
A. 1日くらいです!
 
Q. 個人情報の保護とかは大丈夫ですか?
A. 大丈夫ですよ!https化も済んでいます.

最後:
Q. 当面の目標と最終的な目標を教えてください!
A. 当面は,このSkill Hacksのコンテンツを充実かさせていきたいなと思っています.
最終的に,このSkill Hacksで学んだ人がエンジニアとして活躍して,『人生変わりました』って言ってくれると嬉しいですね.

 マジもんのすごい人だった。あのサイト一日で作ったのか。ひえー。

 動画教材へのリンクを貼ろうと思ったけど私が教材の中身をよく知らないので、また今度にすることにした。自分で購入してその内容を紹介できれば最高なんだけど、ちょっと今は他のことをやりたい。

 興味のある人は彼のウェブサイトへどうぞ。
www.yukisako.xyz

今週のディープラーニングの進捗

 早朝だが、そろそろ子供が起きてきそうな気がするので、ディープラーニングの進捗を記録しておく。進捗ダメです。今週は音声配信の方ばかり更新していて、ブログやプログラミングの方は進まなかった。先日は文字認識のテストをやったので今回は画像認識をやろうと思った。

 良さげなデータセットがあった。

CIFAR-10 and CIFAR-100 datasets

 たくさんの画像を32x32のデータにしてくれていた。ちょっと使ってみたい。この人のブログが非常に参考になる。

aidiary.hatenablog.com

 記事中のコードを動かしたけど、なんかモジュールエラーとかが起こる。なんでかなと思ったら、どうやらcPickleとかいうのが悪さしているらしい。python3ではほかのやつがいいんだって。

testpy.hatenablog.com

 これは別の人の記事。



 ……できるかな?
f:id:kyokucho1989:20180826054453p:plain


 できた。よかったですね。


 ……ほらやっぱり起きてきた!!

ぜんぜんディープじゃないディープラーニング学習/ 手書き数字認識

f:id:kyokucho1989:20180820041341j:plain
Photo by Kalen Emsley

 昆虫には足が六本ある、という旨を息子に伝えてやると、彼はカブトムシの足を数え始めた。五本くらいあったようだ。虫かごで飼われているそれも、最近は食欲が落ちてきたようで、昆虫ゼリーの減りが遅くなっている。数日前から涼しい風が吹いてきて、ようやく人間が生活できる環境が整ってきた。昨日の最高気温は三十二度だったらしい。夏が終わらない。

 ディープラーニングの学習をちょっとすすめた。本に書かれていた「手書き数字の認識」をした。これはMNISTという手書き文字の画像データセットを使って、機械にその画像が数字の何であるかを理解させるものだ。先ほどになって、ようやくサンプルコードのありかがわかった。URLが本に書かれていた。今まで私はなにを見ていたのだ。以下からいろいろ見れる。

続きを読む

はじめてのpython体験と夏のディープラーニング

f:id:kyokucho1989:20180815054829j:plain
photo url

 夏の暑さがやっと例年並みになってきて、早朝の作業が行えるようになった。これからはアサガオの水やりのごとく、pythonの学習をやろうと思う。当面の目標はディープラーニングをつかってなんか面白いものをつくって、aidemy noteのコンテストに応募することである。とりあえずやったことのまとめを書く。

 とりあえず環境というものを構築した。PCは古いmacbookを使っている。入門書に倣って、python3とanacondaというのをダウンロードした。ターミナルと呼ばれる黒いアイコンに文字をひかりあれ、と打つとそのようになった。よかった。単純な文法の勉強などはaidemyの「python入門」という無料講座を利用した。いろいろ書いてあったし、ブラウザさえあればコードがかけるので楽しかった。

aidemy.net

 そのあといろいろあって手がとれなかったが、今日になってようやく勉強を進めた。魚の本(ディープラーニングの赤い本)のp65にある3層ニューラルネットワークの実装をやってみた。その通りに書き写して実行したがエラーが出た。原因はいろいろあった。numpyという多次元配列をインポートしてなかった。networkの綴りがところどころで"netwrok"になってた。sigmoid関数を定義していなかった。identity_function関数を定義していなかった。それらをやってみるとちゃんとプログラムは動いた。

 ターミナルにこのように表示された。

[0.31682708 0.69627909]

 ちょっと意味がわからなかった。なにこれ。この数字が出たら世界がどう変わるのだろうか。知らない。知らないなりに少しずつ勉強していくしかない。

 そもそも3層ニューラルネットワークとはなんなのか。ニューラルネットワークというのはいつかの記事で説明したが、人間の神経回路を模した情報のネットワークのことだ。丸と矢印で構成されていて、丸は数値を演算し、矢印が運ぶ役割を持っている。3層というのは、数値の演算が3回行われるということだろう。

 それぞれの層にはたくさんの丸がいるが、それらは一回の行列計算でいい感じに計算することができる。たとえば一層目の計算は以下のようになる(p61の式(3.9)参照)

 A^{(1)} =  X W^{(1)} + B^{(1)}
さらにこの計算結果をシグモイド関数に入れる。
 Z^{(1)} (A^{(1)}) = \frac{1}{1+exp(-A^{(1)})}

 上つきもじは「何層目の行列ですよ」ということを示している。

 ここで得られた出力Zを次の行列Aに使う。
 A^{(2)} =  Z^{(1)}  W^{(2)} + B^{(2)}


 
 こうやっていい感じに計算するらしい。この計算で本当に人工知能が生まれてくるのだろうか。脳のデータはこうしてやりとりされるのだろうか。やっぱり意味がわからん。

 本日はここまで。

詳細!Python 3 入門ノート

詳細!Python 3 入門ノート

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装