So-net無料ブログ作成
検索選択

Deep Learning を学ぶために Python をセットアップ [Deep Learning]

仕事で Deep Learning が必要になり、慌てて勉強をはじめています。同僚から勧められた教材を読み始めました。


DSC04516.JPG


教材では Python を使うため、早速PCにインストールしました。(Raspberry Pi では最近なじみになっている Python ですが、PCにはインストールされてませんでした。^^;) 教材では Python3 を使っているので、Python 3.6.1 をダウンロードしました。


python_download.png
https://www.python.org/downloads/


インストーラーでインストールするのは簡単です。ただ、コマンドラインから使えるようにするには、プログラムのパスを設定する必要があります。いつも設定に右往左往するので、備忘録を兼ねて手順を書いておきました。


(1)コントロールパネルを開いて、”システムとセキュリティ”を選択します。

System_and_Security.png


(3)システムを選択します。

System.png


(4)システムの詳細設定を選択します。

System_detail.png


(5)システムプロパティの環境変数を選択。

System_detail_window.png


(6)ユーザー環境変数の"Path"に追加したいディレクトリパスを追加します。

System_path.png


Python3 がインストールされているディレクトリは少し分かり難いところにあります。パスに以下の二つのディレクトリを追加しておけばコマンドラインからも Python を利用できます。


%USERPROFILE%\AppData\Local\Programs\Python\Python36-32
%USERPROFILE%\AppData\Local\Programs\Python\Python36-32\Scripts


次に教材で使うライブラリをインストールします。NumPy という数学用ライブラリと、関数描画用ライブラリ PyPlot をインストールします。


C:\User\Taro>pip install numpy
Downloading numpy-1.13.0-cp36-none-win32.whl (6.8MB)
... snip ...
Successfully installed numpy-1.13.0
C:\User\Taro>pip install numpy
Collecting matplotlib
Downloading matplotlib-2.0.2-cp36-cp36m-win32.whl (8.7MB)
... snip ...
Installing collected packages: six, python-dateutil, cycler, pyparsing, pytz, matplotlib
Successfully installed cycler-0.10.0 matplotlib-2.0.2 pyparsing-2.2.0 python-dateutil-2.6.0 pytz-2017.2 six-1.10.0

 
 
いずれも Successfully と出ていればインストール成功です。簡単な Python プログラムを作って動作確認をします。

import numpy
import matplotlib.pyplot as pyplot

x = numpy.arange(0, 10, 0.1)
y1 = numpy.sin(x)
y2 = numpy.cos(x)
pyplot.plot(x, y1, label="sin")
pyplot.plot(x, y2, linestyle = "--", label="cos")
pyplot.xlabel("x")
pyplot.ylabel("y")
pyplot.title('sin and cos')
pyplot.legend()
pyplot.show()


コマンドラインから実行してみます。

C:\User\Taro>python sample.py



すると綺麗な正弦関数のグラフが表示されました。


System_detail_path.png


Deep Learning では画像を扱うことが多いので、PyPlot を使った画像表示用のサンプルプログラムもありました。


import matplotlib.pyplot as pyplot
from matplotlib.image import imread

img = imread('eyebrow_look.png')
plt.imshow(img)
plt.show()



画像が表示されました。簡単ですねー。


pyplt_img.png


NumPy や PyPlot の使い方は、教材に詳しく記述されているので、必要な方は参照してください。特に NumPy は行列演算が簡単にできるので、Deep Learning に限らず数値計算には便利なライブラリです。

さて、これで準備ができました。いよいよ Deep Learning を勉強するかー。
σ(´ω`)





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

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

  • 作者: 斎藤 康毅
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2016/09/24
  • メディア: 単行本(ソフトカバー)



退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

  • 作者: Al Sweigart
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/06/03
  • メディア: 単行本(ソフトカバー)



ディープラーニングがわかる数学入門

ディープラーニングがわかる数学入門

  • 作者: 涌井 良幸
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/03/28
  • メディア: 単行本(ソフトカバー)




Raspberry Pi でブラウザーからLチカしてみる [Raspberry Pi]

Raspberry Pi で CGI を使えるようになったので、次はブラウザ経由でLチカをしてみたいと思います。


DSC04589.JPG


GPIOをコントロールするために、Python からも使える WiringPi というライブラリをインストールします。WiringPi はインストール時にコンパイルされるため、あらかじめ Python開発用ライブラリをインストールしておきます。


pi@raspberrypi:~$ sudo apt-get install python-dev



WiringPi を Python のPip インストーラーを使ってインストールします。

pi@raspberrypi:~$ sudo apt-get pip install wiringpi2
Downloading/unpacking wiringpi2
Downloading wiringpi2-2.32.3.tar.gz
... snip...
Successfully installed wiringpi2 wiringpi
Cleaning up...
pi@raspberrypi:~$

 
 
GPIOをコントロールする Python ファイルを "~/cgi-bin"に gpio.py として作ります。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import cgi
import wiringpi2

wiringpi2.wiringPiSetupGpio()
wiringpi2.pinMode(18, 1) # sets GPIO18 to output

if (wiringpi2.digitalRead(18) == 1):
    wiringpi2.digitalWrite(18, 0)
else:
    wiringpi2.digitalWrite(18, 1)

print "Content-type: text/html\n\n"
print "<html><body>"
print "<h1>GPIO is %d</h1>" % wiringpi2.digitalRead(18)
print "</body></html>"


さて、これを動かすとどうなるでしょうか?

pi@raspberrypi:~$ python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
192.168.2.103 - - [16/Jun/2017 22:15:35] "GET /cgi-bin/gpio.py HTTP/1.1" 200 -
wiringPiSetup: Must be root. (Did you forget sudo?)

 
 
うーん、怒られてしまいました。しかし、CGI経由なので root になりようがありません。いろいろ調べてみたところ、セットアップで呼ぶ関数を代えればよさそうです。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import cgi
import wiringpi2

wiringpi2.wiringPiSetupSys()

if (wiringpi2.digitalRead(18) == 1):
    wiringpi2.digitalWrite(18, 0)
else:
    wiringpi2.digitalWrite(18, 1)

print "Content-type: text/html\n\n"
print "<html><body>"
print "<h1>GPIO is %d</h1>" % wiringpi2.digitalRead(18)
print "</body></html>"



PiSetupGpio を PiSetupSys に代えています。これはGPIO設定をGPIOコントロール関数ではなくシステム設定を使いますよ、というおまじないです。なので pinMode もなくなっています。

GPIOの設定は、 CGIHTTPServer を起動する前に行う必要があります。この例では GPIO18 を外部からコントロールできるようエキスポートし、かつ出力に設定しています。


pi@raspberrypi:~$ gpio export 18 out
pi@raspberrypi:~$ python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
192.168.2.103 - - [16/Jun/2017 23:15:35] "GET /cgi-bin/gpio2.py HTTP/1.1" 200 -
192.168.2.103 - - [16/Jun/2017 23:16:38] "GET /cgi-bin/gpio2.py HTTP/1.1" 200 -
192.168.2.103 - - [16/Jun/2017 23:18:12] "GET /cgi-bin/gpio2.py HTTP/1.1" 200 -

 
 
無事に動いたようです。少し見苦しいですが、動いている様子を撮ってみました。





さて、次はサーボモーターをコントロールしてみようかな。
(^_^)/~





Raspberry Pi 2 Server Essentials

Raspberry Pi 2 Server Essentials

  • 作者: Piotr J Kula
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2016/04/29
  • メディア: ペーパーバック



Raspberry Pi 3 MODEL B 【RS正規流通品】

Raspberry Pi 3 MODEL B 【RS正規流通品】

  • 出版社/メーカー: Raspberry Pi
  • メディア: Tools & Hardware







仕事をジャンジャン突っ込まれたら手抜きが大事! [徒然日記]

最近、数少ないマルチプレイヤーのソフト屋さんということで、仕事をジャンジャン突っ込まれています。今関わっているプロジェクトは4つほど。前から思ってたけどブラックだよなぁ、この会社。

最近は年をとったせいか、適当に仕事をこなすことを覚えてきました。なので昔に比べて仕事が早くなったように思います。でも不思議なことに捏ね繰り回した結果より、よい結果が出るのですよね。

空手も力が入っていると疲れるし動きも遅くなります。力が抜けていると素早く動けますし、強い突きや蹴りが出せます。仕事も同じだなぁと思っています。

でも、さすがに上の人たち、最近ちょっと調子に乗りすぎだよなぁ。。。


kill2.gif






サラリーマン合気道―「流される」から遠くに行ける

サラリーマン合気道―「流される」から遠くに行ける

  • 作者: 箭内 道彦
  • 出版社/メーカー: 幻冬舎
  • 発売日: 2008/09
  • メディア: 単行本



すごい手抜き - 今よりゆるくはたらいて、今より評価される30の仕事術 -

すごい手抜き - 今よりゆるくはたらいて、今より評価される30の仕事術 -

  • 作者: 佐々木 正悟
  • 出版社/メーカー: ワニブックス
  • 発売日: 2015/12/04
  • メディア: 単行本(ソフトカバー)



力の抜きどころ 劇的に成果が上がる、2割に集中する習慣

力の抜きどころ 劇的に成果が上がる、2割に集中する習慣

  • 作者: 古川武士
  • 出版社/メーカー: ディスカヴァー・トゥエンティワン
  • 発売日: 2014/11/20
  • メディア: 単行本(ソフトカバー)




タグ:仕事

Raspberry Pi で簡単 CGI ♪ [Raspberry Pi]

ストリーミングもできるようになったので、次はブラウザからカメラをサーボで動かせたら面白いかなーと思って、Raspberry Pi で CGIサーバーを作る方法を調べてみました。


DSC_0716.JPG


Apache を入れて設定してと、ちょっと面倒だなぁと思っていたのですが、Python を調べているうちに簡単にできることが分かってきました。

手順はいたって簡単。ホームディレクトリに "cgi-bin" というディレクトリを作り、Python のファイルを作って、ホームディレクトリで "CGIHTTPServer" というコマンドを実行するだけです。

順を追って説明します。


1)ホームディレクトリに "cgi-bin" というディレクトリを作ります。

pi@raspberrypi:~$ mkdir cgi-bin



2)"cgi-bin" の中に python ファイルを作成します。

pi@raspberrypi:~ $ cd cgi-bin
pi@raspberrypi:~/cgi-bin $ vi test.py
pi@raspberrypi:~/cgi-bin $ chmod 755 test.py


編集した test.py に実行権限を与えることを忘れないようにしてください。test.py の中身は、"Hello from CGI" を表示する単純なものです。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import cgi

print "Content-type: text/html\n\n"
print "<html><body>"
print "<h1>Hello from CGI</h1>"
print "</body></html>"


注意が必要なのは、Content-type の最後の2重改行"\n\n"です。2重改行がないとブラウザはHTML文書と認識できません。必ず2重改行をつけるようにしてください。


3)Python で "CGIHTTPServer" を実行します。

pi@raspberrypi:~ $ python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...


-m はモジュールの指定です。デフォルトではポート番号が8000番になっています。


4)PCのブラウザから Raspberry Pi のCGIにアクセスします。

URLは、Raspberry Pi に割当たっているIPアドレスを指定します。ポート番号を指定するのを忘れないように注意してください。

CGIHTTPServer.png



あっけなくCGIサーバーが出来上がりました。面倒な手続きは一切なし。Linuxの世界もここまできたかー。

次は外部機器をコントロールできるように、CGI経由でGPIOを制御してみたいと思います。
(^_^)/~





Raspberry Pi 3 MODEL B 【RS正規流通品】

Raspberry Pi 3 MODEL B 【RS正規流通品】

  • 出版社/メーカー: Raspberry Pi
  • メディア: Tools & Hardware



【Pi Zero+Base Kit】 Raspberry Pi Zero+Base Kit+SBcase

【Pi Zero+Base Kit】 Raspberry Pi Zero+Base Kit+SBcase

  • 出版社/メーカー: きばん本舗
  • メディア: エレクトロニクス



Raspberry Pi Camera V2

Raspberry Pi Camera V2

  • 出版社/メーカー: Raspberry Pi
  • メディア: Personal Computers




Deep Learning と Python に苦しむ… [徒然日記]

最近、お仕事関係で Deep Learning からいよいよ逃れられない状況になってきて、いまさら必死に勉強をし始めました。学生時代、多少ニューラルネットワークをかじっていてよかった。


DeepLearningNo.png


しかし、Deep Learning 難しい。難しすぎる。なんちゃらネットとかいうのが重要なようなのですが、何がどう違うのかさっぱり。レイヤーの構成が違うのは分かるのですけど、一つ一つのレイヤーの役割がよう分からん。

おまけにPython… なんでWeb系のスクリプト言語はどれもこれも独特の体系なのか。C,C++原理主義の私にはつらすぎる。せめて、JavaScript に統一してほしいよなぁ。


PythonNo.png


いろいろとぼやきを書きましたが、そのうち学習の経過をブログに挙げたいと思いますー。
(^_^)/~





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

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

  • 作者: 斎藤 康毅
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2016/09/24
  • メディア: 単行本(ソフトカバー)



Deep Learning (Adaptive Computation and Machine Learning series)

Deep Learning (Adaptive Computation and Machine Learning series)

  • 作者: Ian Goodfellow
  • 出版社/メーカー: The MIT Press
  • 発売日: 2016/11/18
  • メディア: ハードカバー



退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

  • 作者: Al Sweigart
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/06/03
  • メディア: 単行本(ソフトカバー)