「ゼロから作るDeep Learning」読んだ
冬休みを利用して読み終わりました。
基本的な関数の話から始まり、ニューラルネットワーク、誤差逆伝播法、過学習、パラメータの与え方、CNN、などなど、学習、ディープラーニングを使うにあたっての基本的なポイントを学ぶことができました。 数学的に難しいところはなく、とても読みやすかったです。
個人的に疑問だった、画像などの次元の多いデータに対してどうアプローチしているのがかわかってスッキリしました。
コードを少し書いて動かしながらやりましたが、コアな部分は著者の方のコードを動かしました。非力なPC(GPU載ってないよん)しか持ち合わせてないので学習をゼロからやるのはできませんでしたー。 TensorFlowとかフレームワークをつかって挑戦してみよう。
雑多なメモをgithubへアップしました。pythonだったのでjupiterを使ってみましたがグラフもペタペタ貼れて便利。今後も遊んでみる。
https://github.com/atotto/deep-learning-from-scratch/tree/learn/mynote
おしまい

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (6件) を見る
DigisparkとLM61で温度を測る
最近Digisparkで遊ぶのにはまってます。 DigiUSBの使い方の導入として、温度をLM61で計測し、データを読んでみたのでメモ。
用意するもの
- Digispark
- LM61CIZ
- Raspberry-Piとか
Digisparkに書き込む
ArduinoでDigisparkの開発環境をセットアップする方法はこちら
これ↓をDigisparkに書き込む:
Digispark LM61CIZ Temperature Sensor
- P2を使ってanalogRead
- DigiUSBを利用してjsonデータを出力
動作確認
作ったDigisparkをUSBで指し、データを読めるか確認してみます。 DigiUSBはrubyのライブラリが配布されていたりするようで、取扱が簡単な様子。
今回はRaspberry-Piでpythonを使って読み込んでみました。
https://github.com/digistump/DigisparkExamplePrograms にサンプルがあるのでそれを使ってみます。
$ sudo pip install pyusb $ git clone https://github.com/digistump/DigisparkExamplePrograms.git --depth 1 $ cd DigisparkExamplePrograms/Python/DigiUSB/source $ sudo python receive.py | jq . { "temp": 23.98 }
うごいたー
Raspberry Piはアナログデータを直接読めないので200円で機能拡張できると思うと安いですね!
Tips
もしroot権限なしで使えるようにする場合はudevルールを追加しておきます。
/etc/udev/rules.d/49-micronucleus.rules
を書いているのであればそこに追記。
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", MODE:="0666"
$ sudo udevadm control --reload-rules
で、次回USBを指したときからroot権限は不要。
参考
Raspberry Piに挿せるモータードライバを試す
raspberry pi に直接挿せるデュアルモータードライバを試したのでメモ。
Pololu DRV8835 Dual Motor Driver Kit for Raspberry Pi
ザクッと挿せてDCモータを2つ扱えるので楽です。
用意するもの
- Raspberry Pi 2 or 3
- Pololu DRV8835 Dual Motor Driver Kit for Raspberry Pi
- わたしはここで買いました
- 適当なDCモータ(動作確認用)
ドライバのセットアップ
https://github.com/pololu/drv8835-motor-driver-rpi を見ながら:
sudo apt-get update sudo apt-get install -y python-dev python-pip sudo pip install wiringpi git clone https://github.com/pololu/drv8835-motor-driver-rpi.git --depth 1 pushd drv8835-motor-driver-rpi sudo python setup.py install popd
で完了。
動作確認
sudo python example.py
でモータの動作確認をしておきましょう。
HTML5 CONFERENCE 2016
リモートで参加しました→ https://www.youtube.com/watch?v=0L0zsaOUKMs
ライブ配信ありがとうございます。
基調講演のメモを雑記↓
Webという分散OS
W3C/KEIO Site Manager 中村 修さん
紙などの既存の表現に縛られている。 新しいデータの表現をWebでユーザに提供できるようになる。
Webは分散システム。分散OS。 Webのエコシステムは分散OSを開発しているということ。 IoTでセンサも入ってくる
Web=OS #html5j pic.twitter.com/yNUT3gj1pF
— ato (@atotto) 2016年9月3日
すべてのUIがhtml、Webの表現になる。
- TV
- 車のインパネ
- 電子書籍
WoT
- デバイスを抽象化してWebから使えるようにする、とか
地球を包み込むOS
みんなが使えるようにする セキュリティも大事
HTML5 Couference 2016
インクリメンツ 及川さん
html5とはwebそのもの。 アプリ、メディア、基盤としてのWebがある。
アプリとしてのWeb
- Webで動くWebAssembly
- C、C++でかけるようになった時、Webってなんなんだろう。
メディアとしてのWeb
- ニュースキュレーションの台頭→メディアとしてのWebとは?
- モバイルWebのUXは最悪。広告やクリックの嵐。←ニュースキュレーションに負ける原因
基盤、プラットフォームとしてのWeb
- 安心、安全につかえる技術
- http2
- https
Webを見なおしてみるとWebは死んだと言われているけど生き返っている。Webは今までもこれからも重要。Webに再投資する年。アプリは、見つけてもらう、インストールしてもらう、使い続けてもらうことは大変→Webが使える
— ato (@atotto) 2016年9月3日
もう一度再発明! #html5j
第8回ROS勉強会へ行ってきました
第8回ROS勉強会@DMM.make AKIBA https://ros-users.doorkeeper.jp/events/46407
ROS勉強会へ行ってきました。初参加です。 NAISTに居た学生の頃、移動ロボットでSLAMをやってたこともあり、今現在のロボットのソフトウェア開発に興味があったのでROSを軽く触っているところです。
以下、ちょっとメモ。
発表
Raspberry-poでMouse
nakagawa-san
raspberry-piが使える:
- 教材として圧倒的(数、ノウハウ、ソフトウェア)
- 下回り(ドライバ)からネットワークまわりまで手軽
https://github.com/ryuichiueda/raspimouse_ros
comment:
- 研究、学習でつかえそうなロボット。raspberry-piだと教育や開発でノウハウがたまっているので扱いやすそう。
ROS
@OTL san
- 通信、ツール、ROSエコシステム
- pub/sub通信
- roscore/rosmasterでNameServerの役割を果たしている(IPアドレス知らなくてもOK)
ROSでやりたいことって?
- インストール大変
- catkinなぞ
- メッセージ定義めんどい
→ つくった: https://github.com/OTL/jps
comment:
- ROSじゃなくてもやれることがたくさんある。適材適所、なのかな。
ROS multimaster
@longjie0723 san
- ROSは基本single master
- 複数のmasterを使いたい
- 独立したシステム、ロボットとの連携
- multimaster_fkie
- https://github.com/longjie/learn_ros_multimaster
- dockerつかって独立した環境を作って複数の独立したmasterを簡単に試せる
- ROS2だとmultiで使える?
comment:
- docker便利ですよね!
- ROS2ってなんだろう。詳細希望..
ROS
@k_yone san
- image_pipeline
.ros/log/latest
に最新ログがある
ROSのメリット
- 変更料が少ない
.rosinstall
のコピーで環境コピーができる
デメリット
- セキュリティ
機材の話とか。ノウハウたくさん
comment:
- ROSのセキュリティは気になっていた所。みんなどうしてる(どうする)んだろう?
- 移動ロボットやってた頃は、Thinkpadのトラベルキーボードをよく使ってました
ROS Node
hayashi-san
- ドメイン駆動設計
- マイクロサービスアーキテクチャ 3.3.3 時期尚早な分解
- マイクロサービスの分解
- ノードは増える、密結合、リファクタリングむずい
- → ドメイン分割
- マルチプロセスを活かす
- 基本的な入出力はROSのエコシステムを活用したい
comment:
サーボ+距離センサでSLAM
@n_sugiura san / takahashi-san
- LRF高い → つくろう(サーボ+距離センサ)
- 距離センサでSLAM
- 近々発売
comment:
- HokuyoのURGをNAISTで使っていて、高いのはよく知ってます・・
- 安価なLRFを自作してそこそこ自己位置推定できているのはすごい
Turtlereal2
saito san
趣味ロボット
SLAM
- gmappingで地図生成→amcl+slam
- URDFでモデル書く
- http://forestofazumino.web.fc2.com/ros/ros_top.html
comment:
- ROSで自分のロボットのモデルを作ってSLAMをシミュレータ上で動かしていた
- 結構時間が掛かりそう
ROSCRAFT
@akio san
comment:
LT
豆蔵
ookuni-san
- 豆蔵では2年前からロボットやってる http://www.mamezou-hd.com/pdf/post20160224mz.pdf
- オブジェクト指向では(ry
- 産業用ロボットシステム
- ロボットアーム、溶接とか。コントローラを作ってる
- シミュレータも自前でつくってる
- https://en.wikipedia.org/wiki/Xenomai
comment:
- 意外なところもロボット関連をやっていた
- ちゃんとシミュレータを作って開発に役立てているのはすごい(テスト駆動になるかな?)
ros_cython
@longjie0723 san
- cythonをpythonからimportできる
- https://github.com/longjie/ros_cython_example
強化学習
@mabonki0725 san
- Sarsa法
- 馬力不足の車の登り学習(mountain car)
- 壁の障害を避ける学習
- 90lineくらいのプログラム
comment:
- もしかしたら昔やった、かもしれないけど、Sarsaを軽く実装してみても面白いかも?
ROS TensorFlow
- Gooleがつくった機械学習用フレームワーク
- https://github.com/OTL/rostensorflow
- 動く
comment:
- TensorFlow自体試してないから試したい
catkin tool
@__akio__
san
- 便利
nodelet
@marona77 san
comment:
- nodeとnodeletの違いがわかった
最後に
ありがとうございました!
お疲れ様でした!初参加楽しめました。ありがとうございます #rosjp
— ato (@atotto) 2016年6月26日
Tex Yodaをメンテナンス
年末の掃除もかねてメンテナンス。
キーの効きが悪いところがあったので調査。 Tex Yodaのmassdropの掲示板を見てみると、ハンダクラックしている疑惑。
ダイオードをハンダしなおしたらちゃんとキーの効きが元通りになりました
関連記事: atotto.hatenadiary.jp
関連情報:
- https://www.massdrop.com/buy/tex-yoda/talk/180595 : キーボードは分解簡単で、自分で直せる
- https://www.massdrop.com/buy/tex-yoda/talk/261440 : ダイオードを買うなら 1N4148 diodes (SMD)

白光(HAKKO) 簡易はんだ吸取器 ハッコースッポン 20G
- 出版社/メーカー: 白光
- メディア: Tools & Hardware
- この商品を含むブログを見る
ビルドしたバイナリからビルドに利用したGoのバージョン情報を読む
なにができる?
- goでビルド済みのバイナリからgoのバージョン情報が取得できます。
なにがうれしいの?
- 配布した(された)バイナリはどのgoのバージョンでビルドされたのかわかります。ので、goの本体にセキュリティ修正などが行われた際、もし古いバージョンだと困るのであれば調べることができます。
やってみよう
適当な実行ファイルをビルドする。とりあえずhelloworldレベルで。
$ cd hello $ cat main.go package main import "fmt" func main() { fmt.Println("Hello, 世界") } $ go build
go tool nm
コマンドで、変数buildVersion
のアドレスが特定できる(ちなみに、buildVersion
は $GOROOT/src/runtime/zversion.go
にある変数):
$ go tool nm hello | grep buildVersion 258ec0 D runtime.buildVersion
これをgdbで見てみると:
$ gdb hello GNU gdb (GDB) 7.9.1 Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-apple-darwin13.4.0". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from hello...done. Loading Go Runtime support. (gdb) x/s *0x258ec0 0x18f110 <go.string.*+8176>: "go1.5.1" (gdb)
で読めます。なお、以前go get
したコンパイル済みのバイナリからもGoのバージョン情報を引き出すことができます。
簡単にバージョンを調べたい
gdbで見るのは面倒なので、objdumpでバージョン情報を取得できるようにしてみました(Linux):
使い方:
$ ./goversion.bash hello go1.5.1
さらに簡単に・・
動かなくなるかもしれませんが単純にgrepしてもいいかもしれません。
力技:
$ objdump -s hello | grep -E "go[0-9]" | sed -e 's/.*\(go.*\).*/\1/' -e 's/\.\.\+//g' go1.5.1
他にいい方法があれば教えて下さい!

Binary Hacks ―ハッカー秘伝のテクニック100選
- 作者: 高林哲,鵜飼文敏,佐藤祐介,浜地慎一郎,首藤一幸
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/11/14
- メディア: 単行本(ソフトカバー)
- 購入: 23人 クリック: 383回
- この商品を含むブログ (223件) を見る