amacbee's blog

Pythonの話とかデータの話とか酒の話とか

#PyLadiesTokyo 1年の活動振り返り

この記事はGeek Women Advent Calendar 2015 5日目の記事です.

こんにちはこんにちは!PyLadies Tokyoで代表をつとめさせて頂いてます@a_macbeeです.
昨年,Tech Women Advent Calendar 2014で「PyLadies Tokyoの紹介」という記事を書いてから1年が経ちました!この記事ではPyLadies Tokyoの1年の活動の振り返りを行います.

PyLadies Tokyo

f:id:amacbee:20151205131830p:plain:w400

PyLadies Tokyoは,女性Pythonistaのための国際的コミュニティPyLadiesの東京支部として,2014年9月に設立されました.2014年10月に初のMeetupを行ってから,定期的にMeetupや各種コラボイベントを行ったり,Girls Tech FesにてWorkshopを行ったり,PyCon JP 2015に参加したり,合宿を実施したり,様々な活動を行っています.

PyLadies Tokyo Meetup

PyLadies Tokyoは,月一回程度のMeetupを中心に活動しています.
これまでに行ったMeetupのリストはこんな感じ.

  1. Pythonと私の付き合い方
  2. LT会
  3. Python for Beginners
  4. Girls Tech Fes
  5. Git for Beginners ( ※Java女子部さんと共催 )
  6. Python+Data=PyData

大体平均して10〜20名程度の方が参加しています.ただ各Meetupテーマが違うこともあって毎回参加する顔ぶれが違い,累計でいくと大体60名超の方にご参加頂いています.
イベントの様子はこんな感じ.

f:id:amacbee:20151205131500p:plain:w250 f:id:amacbee:20151205131421p:plain:w400

この他,Tech Women - New Year's PartyDjango Girls 1-Day Workshopに協賛したり,PyLadies Tokyo一周年記念にはパーティーを行ったりしました.

amacbee.hatenablog.com

Girls Tech Fes - PyLadies Tokyo Workshop

今年の3月に東京大学で行われた女子学生向け情報科学イベントGirls Tech FesにてPyLadies Tokyo Workshopを行いました!イベントの振り返りについては,PyLadies Tokyoフタッフの@nobolispyさんがPyCon JP 2015で発表してくれています.

www.slideshare.net

PyCon JP 2015

PyLadies TokyoとしてPyCon JP 2015に参加しました.
詳細は以下の記事にまとめてあります.

amacbee.hatenablog.com

合宿

先日河口湖にてPyLadies Tokyo 秋合宿を行いました!
もくもくしたり,一緒に御飯を作ったり,夜はお酒を飲みながらわいわいしてました.
以下様子です.

f:id:amacbee:20151205135142j:plain:w250 f:id:amacbee:20151205135013j:plain:w300

また合宿中に,PyLadies Kyoto Meetup #1に向けてSkypeを使ったハンズオンを行ったりしました.

pyladies-kyoto.connpass.com

最後に

色々あった1年目の活動ですが,おおむね成功したんじゃないかと思っています.
活動を手伝ってくれているスタッフの皆様,講師を引き受けて下さった皆様,そして何より参加者の皆様に感謝しています.ありがとうございました!

最後に次回以降のイベント情報です.

まず12月にAnsibleに関するMeetupを行います!

pyladies-tokyo.connpass.com

また,まだ公開されていませんが1月にSphinxに関するMeetupと実践Python 3の輪読会を行う予定です.
興味のある方がいらっしゃいましたら,PyLadies JapanのSlackにて随時イベント情報を流していますので覗いてみて下さい(※Slackは女性限定です)

bit.ly

来年もよろしくお願いします.

Python製深層学習ライブラリ「Keras」の紹介 (with TensorFlow)

皆様こんにちは,@a_macbeeです.
(大分時間ギリギリになってしまいましたが)この記事はAdvent Calendar 2015 - VOYAGE GROUP 2日目の担当分になります.

2015年は良くも悪くも深層学習がバズワードとなって盛り上がった年でした. 面白い論文が続々発表されたり,関連書籍が次々出版されたり,最近だとGoogleが発表した深層学習ツールTensorFlowが話題となってます.

このビッグウェーブに乗るしかないということで,この記事では自他共に認めるPython大好きな私がPython製の深層学習ライブラリである「Keras」について紹介します.

Keras

KerasはPython製の深層学習ライブラリです.
もともとはバックエンドとしてTheanoを採用していたのですが,つい最近TensorFlowも選択できるようになりました.ここでは,折角なのでTensorflowをバックエンドとして利用する方にフォーカスして紹介します. 個人的には,シンプルで拡張性の高いところと,開発が盛んでPython3.5でも使える点などが気に入っています(日本だとあまり聞きませんが,海外だと結構人気な印象(あくまで印象))
※バックエンドとしてTensorFlowを利用する場合はPython2.7縛りが発生します

インストール

pipを使って簡単にインストールすることが出来ます.

$ pip install keras 

ベースにTensorFlowを利用する場合は,別途TensorFlowも導入しておきましょう(以下はMac環境に導入する例)

$ pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl

KerasのバックエンドをTensorFlowに変更する

KerasはデフォルトでTheanoを利用する仕様になっているので,TensorFlowを利用したい場合は設定を書き換える必要があります. バックエンドの変更は非常に簡単で,~/.keras/keras.jsonというファイルを作成して以下の内容を書き込むだけです.

{"backend": "tensorflow"}

もちろん,TeanoとTensorFlow両方に対して互換性のある形でコードを記述することが可能です. 個人的にはそこが一番特徴的でKerasの面白い点だと思ってます.
詳細は公式ページをご覧ください:Keras backends

Getting Started

Keras以外の深層学習ライブラリを利用したことのある方であれば,「Getting started: 30 seconds to Keras」をさらえばざっくりとした使い方は分かるかなと思います.

MNIST

ド定番のMNISTを使って,簡単に使い方を説明します.
コードの全容はこちら:MNIST - Keras (Backend: TensorFlow)

Kerasでは,定義したモデルにレイヤを追加していくことでネットワークを定義します.シンプル.

model = Sequential()
model.add(Dense(10, input_shape=(784,), init='zero'))
model.add(Activation("softmax"))

# こう書くことも出来ます
# model.add(Dense(10, input_shape=(784,), init='zero', activation='softmax'))

モデルのコンパイルや訓練,評価などは以下のように書けます.
サポートしている lossoptimizer の種類については公式ページをご覧下さい.

# モデルをコンパイルして訓練
model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=0.01))
model.fit(X_train, y_train, nb_epoch=10, batch_size=100)

# テストデータを使ってモデルを評価
model.evaluate(X_test, y_test, show_accuracy=True)

このコードは,もちろんバックエンドをTeanoに変更しても動きます.

IMDB Movie reviews

もう一つ,映画レビューの感情分類の例を紹介します.
コードの全容はこちら: IMDB Movie reviews sentiment classification - Keras (Backend: TensorFlow)

ここではLSTMを利用しています.
ツールと同様,シーケンス長の調整や,Embeddingなどの操作も非常に簡単に書くことができます.

# シーケンス長をmaxlenに調整
X_train = sequence.pad_sequences(X_train, maxlen=maxlen)
X_test = sequence.pad_sequences(X_test, maxlen=maxlen)

model = Sequential()
model.add(Embedding(max_features, 128, input_length=maxlen))
model.add(LSTM(128))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))

Kerasはバックエンドに依存してCPU/GPU環境が分かれます. Kerasで定義されるメソッドを利用する上ではそこを意識する必要はありません(ちなみに上記のコードはCPU環境で動かしてます)

最後に

本当は「A Neural Conversational Model」をやっていたのですが諸々の事情で間に合わなかったので,この辺りでお茶を濁しておきます.気力があればまとめるかもしれません.
KerasはTensorFlow使ってみたいけど文法覚えるのだるいといった私のような人間にはおすすめのライブラリなんじゃないでしょうか.

ここまでやっておいてなんですが,深層学習のツールだとChainerが一番好き.

#PyLadiesTokyo 一周年記念パーティーを開催しました

先週の土曜日に PyLadies Tokyo 一周年記念パーティーを開催しました!

pyladies-tokyo.connpass.com

今回は PyLadies Tokyo 初となる男性も参加 OK のイベントで,どんな雰囲気になるのか想像がつかず手探りな感じで開催したのですが,結果として大成功に終わることができたんじゃないかなと思います.
イベントの模様を簡単にレポートします.

概要

当日は総勢20名の参加者に対し飛び入りも入れて18件のLTが披露されました.*1
登壇して頂いた皆様,準備等お疲れ様でした! 以下はLTリストです ( 見つけられたものについては資料へのリンクを貼りました )

当初想定していたよりも色んなテーマが混ざってすごく聴き応えのある感じでした!

一周年記念ということでケーキを用意してみたり,

f:id:amacbee:20151027011501p:plain:w200

最後に集合写真も撮りました!

f:id:amacbee:20151027011435p:plain:w400

改めて,参加して頂いた皆様ありがとうございました!

LTしました

Blazeと見せかけた @shinyorke さんへのマサカリ野球LTをしました.
ちなみに最初は本当に Blaze ネタでいくつもりで準備してたんですが,タイトル公開した時点から LT なのに代表なのにもっと面白いことしないの?って煽られ続けて発表の2日前くらいに急遽内容変えました.思いつきです.Blaze について色々勉強しているところなのでそちらについては別の機会に LT やりたい.マサカリ LT の経緯についての説明は @shinyorkeさんのエントリ に譲ります.
こんなグラフとか用意したりしてました.

f:id:amacbee:20151027013458p:plain:w400

結果として,色んなサイトのスクレイピングに手間取って ( 言い訳 ) 本番開始時点で実験が終わっていないという体たらくでした.飛び込み LT で時間をかせいで頂いた方には申し訳ない気持ちで一杯ですorz
発表資料作る暇もなくて中途半端な解析で見事に爆死しましたが,トリで皆さんお酒が入っていたのでとりあえず笑って頂けて良かったです.
ただ @shinyorke さんにマサカリ投げるならここしかないという気持ちだったのでとても口惜しい・・・ので,同ネタをブラッシュアップして Baseball Play Study #3 でリベンジすることにしました.もっとマサカリを研いで臨む所存です.

感想とか

ここのところずっと感慨深い感慨深いと言っている気がするのですが,ようやく1年も経ったのかと本当に感慨深い!
新たに PyLadies Kyoto も立ち上がって,これからもっともっと日本の PyLadies 界隈を盛り上げていきます!今後ともよろしくお願い致します.

参加者のエントリ

見つけられたエントリへのリンク貼っておきます.

shinyorke.hatenablog.com yukinoi.hatenablog.com

*1:同一発表者が複数回 LT したりしてました

#pyconjp 2015 に参加してきました

10月9日から12日にかけて,PyCon JP 2015 が開催されました.私はそのうちカンファレンス (10日,11日) とスプリント (12日) に参加してきました.去年はスタッフとしての参加だったのですが,今年は PyLadies Tokyo の代表として,コミュニティメンバーも一緒にみんなでわいわいしてました.
個人としてはパネルディスカッションのパネラー兼ファシリテーターに挑戦してみたり,PyLadies Tokyo としてはコミュニティブース出したり,コミュニティメンバーである @nobolis さんが 「PyLadies Tokyo-初心者女性向け Python 体験ワークショップ開催の裏側」というタイトルで発表をしてくれたり,新 PyLadies 日本支部立ちあげのスプリントを行ったりと,去年以上に充実した3日間になりました (あと人生初のサイン会にも挑戦しました.

前置きが長くなってしまいましたが,それぞれについて振り返ってまとめたいと思います.

パネルディスカッション ~ いま求められるコミュニティの多様性と未来 ~

折角なのでパネルディスカッションの経緯からまとめたいなと.
初めてこの話を頂いたとき,内容やパネラーの選定は任せるので何か考えてみてということで悩みに悩みました. Possibilities of Python のテーマからコミュニティの多様性について話すと面白いのではと思いたち,それぞれ違った特色のある4つの女性向けコミュニティ (PyLadies Tokyo, Java女子部, Django Girls, Rails Girls) でパネルディスカッションを行うことに決めました.この場を借りて,江森さん,横田さん,榎本さん,まだ内容もあやふやなうちから快くパネラーをお引き受けくださり本当にありがとうございました!

主観的な意見かもしれませんが,私の知る限り女性向けコミュニティには男性向けコミュニティとは違ったモチベーションを持った方が多く参加されています.例えば,自分の介護ロボットを作りたくてプログラミングを始めた還暦の方がいたり,プログラマーな旦那さんの仕事について理解したくてプログラミングを始めた方がいたり.行動力のある方だと海外からイベントのために日本に渡ってくることもあります.女性向けコミュニティは初心者女性の方にとっての心理的ハードルが低いらしいという背景はありながらも,私自身 PyLadies Tokyo のコミュニティを立ちあげてから,参加者の多様性には驚かされてきました.
このような事例を伝えた上で,いまコミュニティに求められていることは何か?というのを一緒に考えたいというのが本パネルディスカッションの趣旨です.

ディスカッション中でも様々な意見が出ていましたが,ここではスペースの都合上省略します.もし良ければ YouTube のリンクを貼っておいたので視聴してみて下さい.時間があったら「コミュニティは今後どうなっていくと思いますか?」「またはどうなって欲しいですか?どうなると面白いと思いますか?」といった話もパネラーの方にふろうと思っていたのですが,時間が足りませんでしたorz これらについては改めてどこかでお話し出来ればと思います.

ディスカッション中はどう話をつなげようか必死に考えていて,そうするとうまく言葉が出てこず,最後のまとめとかグダグダになってしまいました.反省点が多々あります.しかし,自分が思っていたよりも多くの方が好意的な反応を示して頂けたようで嬉しいです!( Togetter 情報
参加して頂いた皆様ありがとうございました!
感想とか,感想とか,感想とか伺いたいです!!質問もお待ちしています!!!

以下は発表の様子とスライドです.

PyLadies Tokyo-初心者女性向けPython体験ワークショップ開催の裏側

スタッフの一人である @nobolis さんが,PyLadies Tokyo の1年間の活動と Girls Tech Fes のワークショップについて発表してくれました.改めて振り返ってみると1年間結構色んな活動したなという感じで,感慨深く発表聞いてました.

Girls Tech Fes のワークショップに関しては,全然メンバーがいないうちから見切り発車で参加を決めたため,手伝って頂いた皆様には感謝してもしきれません.1時間に満たない時間で初心者にプログラミングの面白さを伝えるのって結構難しいなというのが私の感想です.あと準備とか後手後手でプログラムの完成度は低めになっています.心優しい皆様の Issue 起票とか PR とか切に切にお待ちしています!(PyLadies Tokyo の Slack で Github から通知くるの正座して待ってます.

github.com

以下は発表の様子とスライドです.

コミュニティブース

カンファレンス初日に PyLadies Tokyo のコミュニティブースを出しました.そこで PyLadies Seoul 代表の方に1年ぶりに再会したり,PyCon APAC 2015 でお知り合いになった方に PyLadies Taiwan の方をご紹介頂いたり,PyLadies Poland でメンターされてる方とお話したり,かなり国際色豊かな交流を行いました.

f:id:amacbee:20151014151701j:plain:w400

PyLadies で活動しているとどこの国の PyCon に行っても PyLadies メンバーでわいわい出来るのでおすすめです. 来年の PyCon APAC 2015 では PyLadies APAC のメンバーで一緒にイベント企画しようと色々準備してたりするので,今後の発表を楽しみにお待ち下さい!

スプリント

PyLadies Tokyo として,新 PyLadies 日本支部立ちあげ支援のスプリントを行いました.記念すべき日本2つ目の PyLadies 日本支部は京都に誕生しました. これから活動を続けていくためにやることはまだまだ一杯ありますが,とにかく支部を立ちあげたいですと言って頂けたのが嬉しかったです!

pyladies-kyoto.connpass.com

スプリント中には,PyLadies 全体の co-organizer をつとめる Esther さんが現地時間深夜にも関わらずリアルタイムで立ちあげを手伝ってくれました.PR 投げてからレビュー,本番反映まで1分もかからなかった気がします笑.私が PyLadies Tokyo の立ちあげを行ったときは右も左も分からずくじけそうな感じだったので,立ちあげのお手伝いできて良かったです!

PyLadies Kyoto の活動に参加して頂ける方や,スタッフとして活動を手伝って頂ける方はぜひ kyoto [at] pyladies.com までご連絡ください.また,私も新 PyLadies 日本支部立ち上げたいというガッツある女性の方からのお声がけもお待ちしています.

まとめ

見て面白かったセッションについてもまとめようかと思ったのですが力尽きました.

昨年 PyCon JP で PyLadies Tokyo のお披露目をしたときは全然女性がいなくて途方にくれたりしたのですが,今年は PyLadies Tokyo コミュニティ参加者で PyCon JP に参加して,PyCon JP は女性参加者多いんですね〜なんて言われたりしたのが凄く嬉しかったです!
あと毎日の2次会やら何やらに付き合って頂いた皆様,ありがとうございました!
・・・来年も企画するのでお楽しみに (ΦωΦ)

最後に,PyCon JP 2015 の運営に携わったスタッフの皆様,本当にお疲れ様でした!
全力で楽しませて頂きました.また来年も色々な形で参加したいなと思っていますのでよろしくお願いします.