AWSアカウント作成からAlexaアプリを作るまでの話
Alexaアプリを作る?
n番煎じではありますが、せっかくAlaxaを持っているのにサザンオールスターズを部屋で流すことにしか使っていなかったので使ってみたいと思います。 ググるとたくさん出て来て、さらにamazonに記載のあるトレーニングでつまるところなくサンプルが動いたので、リンク貼ります。
Alexaスキル開発トレーニングシリーズ 第1回 初めてのスキル開発 : Alexa Blogs
じゃあお前何やんの?
サンプルを動かすところまでは本当に何もせずにできてしまったので、サンプルにオリジナリティを出すということをやろうということにしました。
具体的には、lambdaにアップロードするzipの中身をいじって、挙動を変えたいと思います。
(と言ってもいじったのはサンプルのzipのindex.jsだけ)
サンプルから変更した時に詰まったところ
色々サンプルから変えて、ちょっとググりが必要だったところを恥ずかしいですが、書きます。
変更してzipにしてアップロードしたものが動かない
サンプルのzipを変更し、zipしてlambdaにアップロードする必要があるのですが、それをする際にちょっと詰まりました。
zipのアップロード後にAWSコンソールからlambdaのテストをした際にindex.jsしか変更していないつもりなのに、以下のようなエラーが出ました。
{ "errorMessage": "Cannot find module '/var/task/index'", "errorType": "Error", "stackTrace": [ "Function.Module._load (module.js:276:25)", "Module.require (module.js:353:17)", "require (internal/module.js:12:17)" ] }
結論を言うと、zipの仕方に問題がありました。
macbookのfinderから右クリックでzipにしていたのですが、そうすると右クリックしたフォルダもzipに含まれてしまうので
lambda_hoeghogeのフォルダの中にterminalで入って
zip -R ../lamnda_hogehoge.zip *
でできたファイルをlambdaにアップロードすることで解決できました。
初歩的と言うか、lambdaにどんなzipを食わせてるのかを考えていなかったことがバレてしまうエラーでした。。。
スキルの呼び出し名を変更しても。反映されない
alexa developer consoleから呼び出し名を変更して、ビルドしても変更されなくて焦りました。
呼び出し名を変更したい場合には、変更後、変更を保存してからビルドしなくてはなりません。
ビルドする際に勝手に保存してくれると思ったのですが、そうではないようです。
今回作ったスキル
公開してみました。(現在審査中です。審査通ったら更新するかも)
なんともないアプリですが、自分が作ったもののアウトプットが音声で返ってくるのは嬉しいものですね。
スキルを一つでも公開するとawsで使えるプロモコードがもらえるようなので、それも嬉しいです。
あとでやってみようと思います。
vggnet 敗れる?
昨日
過学習してしまったcnnの構造をどうにか過学習しないようにしようと、
vggnetを採用し、実行しました。あまりうまく行きませんでした
原因としては、
- 画像の少なさ
- cnn設計が浅い
vggnetの論文とかを読んだわけではないので浅いです。
僕の浅い理解では、畳み込み層とプーリング層をめちゃくちゃ積み重ねればめっちゃ学習できそうじゃね?みたいなノリのものだと思ってます。
どんどん細かいところの特徴を学習できそうな気がするので、おかしいことをやっているわけではなさそう
tf_learnのsample codeにあるvggnetでは、(畳み込み+畳み込み+プーリング)を5つしてから全結合をしています。
ただし、その分計算が増えてしまうので、僕の実行環境でできそうな4つの積み重ね+全結合で実行していきます。
また、DropOutを使ってみたかったので、全結合層の後だけでなく、(畳み込み+畳み込み+プーリング)のあとにDropOutを追加してみました。(これが良くなかったかも?)
数値的には、昨日の値とほとんど変わりませんでした。が、グラフを見る感じ、収束しているように思えなかったので、epochを上げてみようと考えています。
あと、(畳み込み+畳み込み+プーリング)の後のdropoutをなくして実行してみます。
これでうまく行かない感じだと、いよいよ画像の追加が必要になってくる気がする…
cnn過学習 乙
oichan.hatenablog.com
cifar-10 tutorialのコードそのままで、入力データだけ変えるという愚行をした結果...
過学習
しました。
グラフは出しませんが(次から出すかも)
Accuracy/Trainだと98%で、
Accuracy/testだと30%でした。
4クラスに分類する問題にしているので、期待値と変わりませんね…
原因は
- データの少なさ
- 入力画像の複雑さに対して、入力画像が小さすぎた
があると考えています。
データの少なさはちょっとデータの種類的に増やすのが難しいので、入力画像のresizeをもう少しでかくします。
現在32×32
次 64×64
他はほとんど変えずにどのくらい汎化性能が上がるのか楽しみです。
TF learnでお手軽CNN(をこれからします。)
研究室の人たちで今流行りの?ディープラーニングの教科書の輪読を行いました。
深層学習 Deep Learning (監修:人工知能学会)
- 作者: 麻生英樹,安田宗樹,前田新一,岡野原大輔,岡谷貴之,久保陽太郎,ボレガラダヌシカ,人工知能学会,神嶌敏弘
- 出版社/メーカー: 近代科学社
- 発売日: 2015/11/05
- メディア: 単行本
- この商品を含むブログ (1件) を見る
ディープラーニングといえば、画像認識ということで、cnnをやってみました。 チュートリアルにある単純なcnnをベースに、自分の持っているデータで学習させて、どんどんcnnを改良していきたいと思います。 やっていくコードのmainの部分をいかに更新していく予定です。 github.com
crudataの取得
crudata
上のURLに気温とか降水量とかをオープンデータベースとして公開してある。 詳しくはリンク先を読めば大体分かる。
とりあえず、時系列になってる世界各国の気温とか降水量等のデータが使えるらしい。
ただ、ダウンロードがしにくい。一つの項目(気温とか)に対して290ファイル(気温)とかが別個に置いてあるから右クリックカチカチしてたら終わるころには人類滅亡してる。 クソコードだけど
コード
crudataをダウンロードするためだけに書いたコードだから汎用性はまるで無いゴミコードだけど動いたからokということにする。もう使わないし
中身的にはhtmlファイルとって来て、ダウンロードすべきファイル名を取得して、そのファイルをダウンロードしてるだけです。
世界の温度知りたいとか降水量とかのデータが欲しいという人の役に立てたらうれしく思います。
(特にTKB大院R専攻G演習の人たちに役立ちたいと思って書きました。)
北海道行った
札幌すげえ
羊うめえ
ウイスキーおいしそう
函館夜景すげえ
イカの踊り食いキツい
っていう旅でした.
函館の有名な夜景
撮るの難しかった.
一応リモコン使ったんだけどなー設定がアレですね
久しぶりにDSLR.bot
oichan.hatenablog.com
で作ったやつ使おうと思って出したけど
半田浮いてて使えなかった…
旅行前日にまさかのハンダ付け
本当はもっときれいにつくれば良いんだろうけどいい感じのケース作るのめんどくさかったし
スマートフォン用リモコンキット買った作った方がコスパいいなって思った.
って調べたらML-L3の代替品がこんなに安く出てて
これでいいじゃんってなった
【48119】 Nikon ニコン ワイヤレス リモコン ML-L3 の互換品 無線 リモート シャッター 一眼レフ カメラ 用 リモコン
- 出版社/メーカー: フォーチュン
- メディア: エレクトロニクス
- この商品を含むブログを見る
LoL API使った
2015/06/18 追記
champごとの勝率とかban rateは取得できないっぽい
lolking等ではいくつかのサンプルの試合から勝率等を計算してるのかな…
League of Legends
League of Legends
というゲームのAPIを使ってみた
やること
毎週変わるfreechampを取得する
ググれば一瞬で出てくるので本当に実用的ではないけど
API
APIの種類は意外とたくさんあって、champごとの勝率とかban rate(上部に追記しました)とかchampの画像とか結構何でもできちゃいそうな感じがする。
https://developer.riotgames.com/ここからリファレンス見れば全部書いてある。
ただ、apiのkeyはLoLのアカウント持ってないともらえない
コード
https://na.api.pvp.net/api/lol/na/v1.2/champion?api_key=でfreechampのidを割り出して、
https://na.api.pvp.net/api/lol/static-data/na/v1.2/champio/{id}?api_key=
でidから名前を取得した
#coding:utf-8 import os import requests import json def lol_api(): champ_url='https://na.api.pvp.net/api/lol/na/v1.2/champion?api_key=*****************' champion_r = requests.get(champ_url) for k in champion_r.json()['champions']: if k['freeToPlay']==True: c=k['id'] freechamp = requests.get('https://na.api.pvp.net/api/lol/static-data/na/v1.2/champion/'+str(c)+'?api_key=*****************') print freechamp.json()['name'] else: pass if __name__ == '__main__': lol_api()
結果
上のコードを実行すると
Akali
Amumu
Blitzcrank
Draven
Irelia
Lissandra
Master Yi
Miss Fortune
Nami
Twisted Fate
と表示されました。
Blitzcrank楽しいですね
これから
データを駆使して隠れOPchampを見つけて少しでもPSをカバーしたいです。
おわり