gcpのdatalabにchromeからアクセスできない

しばらくdatalabを使っていたらブラウザからアクセスできなくなった。 対応するportにchromeからアクセスすると、このページは動作していません、という画面になる。 gcloud compute ssh hogeでVMに直接入ることは可能だったのでいろいろ試してみるとこんな…

google colaboratoryで学習が進まなくなった

google colaboratoryで強化学習のプログラムを書きつつ動かしていたのだが、少し間があいて1ヶ月ぶりくらいに動かしてみたら、学習がまったく進まなくなってしまった。こんな感じで青が以前、赤が今回。 自分のプログラムを同じ状態に戻して↑の状態なので、…

hatena blogでtexによる下付き文字がうまく表示されない

以下のような形で書いたところうまく表示されない [tex: x_{i,j} + x_{j,k}] このように表示される [tex: x{i,j} + x{j,k}] 少しググってみるとこちらのブログでその原因が解説されていた はてなブログのTeX記法で数式を書く時用のチートシートと注意点 - ぴ…

pytorchでnoisy networkを実装

元の論文はこちら [1706.10295] Noisy Networks for Exploration 常にその時点で価値の高い行動を取り続けた場合、最初に価値が高くなった行動が取られ続け、別の行動を取る可能性がなくなってしまう。それを防ぐため元のDQNではε-greedy法と呼ばれる手法を…

pytorchでprioritized experience replyを実装

元の論文はこちら [1511.05952] Prioritized Experience Replay DQNで学習を進めるための重要なテクニックとしてexperience replyというものがあり、これはメモリにためておいたstateやactionの記録をmini batchとしてランダムに取り出して学習させるという…

グループ毎に重複が存在することを検知するクエリ

あるカラム(group_id)の値でグルーピングした上で、カラム(value)の値が重複しているgroup_idを抽出したい。 # table: example group_id value 1 1 1 2 1 3 2 1 2 3 2 3 例えば上記のようなテーブルがあった場合は、group_id=2のvalue=3が重複している。 以…

pytorchでindexのリストを指定してtensorの要素を取得

Double DQNの実装に必要になるちょっとした計算についてメモ 2つの2次元tensor x, yを用意し、"xの各行において最大の値を持つ要素"と同じ位置にあるyの要素を取得する >>> x = torch.rand(3,5) >>> x tensor([[ 0.0778, 0.6633, 0.4953, 0.1461, 0.4691],…

dueling networkを調べつつpytorchで実装

強化学習の性能を改善する方法の一つであるdueling networkについて調べたのでメモ。まず参考にしたのはこちらのqiitaの記事 【深層強化学習】Dueling Network 実装・解説 詳細な部分についてはこちらの論文を参考にした [1511.06581] Dueling Network Archi…

Google Colab上でgym-retroのソニックを学習

以前迷路の学習を方策勾配法でやってみて、それをこちらにまとめた 方策勾配法とニューラルネットワークで迷路を学習 - MEMOcho- これと同じ方法をgym-retroに適用してソニックの学習を試してみた。ちなみに先に結果を書いておくと、スコアをちゃんと取れる…

OpenAI Retro Contestの環境でリプレイ映像を見る

OpenAI Retro Contestの環境構築そのものは既にまとめてくれている方がいて、大変わかりやすかった。この通りにやったら簡単にGym Retro Integrationを動かすことができた。ありがとうございます。 OpenAI Retro Contestの「Gym Retro Integration」でソニッ…

方策勾配法とニューラルネットワークで迷路を学習

DQNで実装したものはネット上でよく見かけるが方策勾配法を使ったものは意外と見つからないのでやってみた。 題材はこちら 第5回 ⽅策勾配法で迷路を攻略|Tech Book Zone Manatee 私はこの連載で強化学習の基本的な実装方法を学んだがとてもわかりやすかっ…

pytorchでエラー(Leaf variable was used in an inplace operation)

タイトルに書いたエラーが出たのでわかったことをメモ とりあえず解決に最も有用だった情報はこれ Leaf variable has been moved into the graph interior - autograd - PyTorch Forums 生成したtensorの要素を直に書き換える処理をした上で、backwardを行う…

ios向けビルドは通るがandroid向けビルドは失敗

cocos2dxで開発している際、タイトルのようなことがあったので原因を調査。 ちなみにiosはxcodebuild、androidはgradleでビルドしていた。 iosとandroidのビルド結果を見比べると、iosのビルド時には以下のようなビルドオプションがついていることがわかった…

git lfs管理下のファイルに対するコンフリクト解消漏れを防ぐ

git

コンフリクト解消をしそこねて>>>>>>みたいなマーカーがそのまま上がってしまってる場合がある。以下に紹介されているようにhookを書いてがマーカーが含まれていればcommitをキャンセルすることで回避できる。 [Git]コンフリクトをよりスマートに解消したい…

中身がポインタのvectorから特定要素を削除

c++

vectorから特定の条件でフィルターをかけて要素を削除するにはerase-removeというイディオムがある。std::remove_ifで条件に当てはまる要素を後ろに移動させ、返り値のiteratorから元のvectorの最後尾までをeraseにかける、というもの。 cf. std::remove_if…

photonとの通信で接続が切れたことを検知する

photonとの接続が切断されたことを検知する方法を調べたのでメモ 公式のドキュメントはこちら https://doc.photonengine.com/ja-jp/realtime/current/reference/analyzing-disconnects photonのサーバとクライアントはheartbeatのメッセージを投げあって、接…

c+11でメンバ変数初期化のされ方

c++

c+11で書いていてクラス内のメンバの中に、コンストラクタで初期化子が定義されてないものがあったのでどのような挙動になるのか調べてみた。 これらを見るとわかりやすい C++11: Syntax and Feature C++の初期化は分かりにくい - ぷろみん まず、staticが付…

daedalus walletがネットワーク接続中のまま進まない

ADAを保持するためdaedalus walletをinstallしたが、起動してすぐにネットワーク接続中のまま動かなくなってしまった。何の設定もしてない状態なのでとりあえず再インストールもためしてみたが効果なし。 なのでググってみるとそういう事例はたくさんあるよ…

ナンクロで数字探しを省くためのツール作成

最近漢字ナンクロをよく解いたのだが、問題が大きくなってくると熟語を考えるより数字を探す時間の方が長くなってしまい面倒だった。それを解消するためこちらのようなツールを作った。 https://y-kamiya.github.io/nankuro-editor/public/ 使い方 repo上にe…

docker container内でcpuminerをビルド(bitzeny)

cpuminerでマイニングするためminerdをビルド。その際ごちゃごちゃさせたくなかったのでdockerのコンテナでやったのでメモ。ちなみにビルドしたのは最近話題になっているbitzeny用のcpuminer。 このqiitaの通りで問題なく苦労するとこはなかった。 https://q…

rippleで使われるコンセンサスアルゴリズム

仮想通貨であるrippleで用いられるコンセンサスアルゴリズムについて、white paperを読んでみたのでわかったことをメモ。 まとめ ビザンチン将軍問題への耐性のあるアルゴリズム 20%のfaultがいてもコンセンサスを得られる(非同期の環境で) 有限時間のうち…

ctagsでheader fileが検索されない

c++

c++のコーディングをした際、クラスやいくつかの関数に飛べないことに気づいた。 調べてみるとどうやら*.hに書いたものだけが当てはまる模様。 $ ctags --list-map | grep c++ C++ *.c++ *.cc *.cp *.cpp *.cxx *.h++ *.hh *.hp *.hpp *.hxx ということでc++…

cocos2dxでの子要素の位置

例えばlabelの先頭にiconをつけたい場合、 labelの子要素としてimageをおいてpositionを調整しておけば、label側の文字数が変わろうともその先頭にiconをつけることができる。 私はこの挙動を最初理解できなかったのだが、以下のブログを見て間違っている点…

csvからsqliteのtable schemaを抽出する

以下のようなデータからsqliteのcreate table時に必要なカラム名と型名のリストを抽出したい data.csvとしておく columnA,columnB,columnC,... INT,INT,INT,... 1,2,3,... 11,22,33,... ... 抽出したいのはこれ columnA INT, columnB INT, columnC INT, ... …

phpのexecでwrite error: Broken pipe

exec('ls | head -n1") phpでこのようにしたら以下のエラーが出た write error: Broken pipe ただし処理自体は正しくできているようで、エラーが出るだけのよう bashで同じように実行しても特にエラーは出ない ググってみるとこんなのがヒット https://stack…

xcodeで"Could not locate device support files"

xcodeをupdateした後、runした際にタイトルのようなエラーが出たのでメモ エラーメッセージを見るとxcodeが対象のiphoneのOSをversionをサポートしてないということのよう。 Xcode.appの下にあるDeviceSupportに使いたいOSのversionが含まれていないとこうな…

touchbar付きのmacでワンタッチsleep

touch bar付きのmacbookproは電源ボタンを押してもsleepしてくれない。 左上のメニューからsleepを選べば当然問題ないがもっと手間を省きたいためショートカットする方法を調べてみた。 ググったら簡単にみつかった 20 tips & tricks for the new MacBook Pr…

yampaのpSwitch

yampaについて調べていると単純なswitchについての説明はいくつか見つかるのだが、pSwitchについてはなかなか見つからなかったのでわかったことをメモしておく。 こちらのブログとhaskanoidのソースコードを参考にした。 http://bitterharvest.hatenablog.co…

vim pluginを探すときに便利なとこ

vim

vim awesomeというpluginを集めたサイトを見つけた。現在15,000くらいのpluginを掲載しているようで、使っているユーザの多い順にランキングされている。 vimawesome.com 使っているユーザの判定はgithub上でdotfilesとして公開されている設定ファイルから、…

surround.vimにドットコマンドを効かせる

vim

surround.vimはカッコやクォートなどのペアを消したり置換したりできるコマンドを加えるplugin。ダブルクォートになっているものをシングルクォートにしたいことなどよくあるので便利。 複数箇所に同じ置換を行いたい場合、少数ならドットコマンドで繰り返し…