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。ダブルクォートになっているものをシングルクォートにしたいことなどよくあるので便利。 複数箇所に同じ置換を行いたい場合、少数ならドットコマンドで繰り返し…

Neomake - 非同期実行のSyntastic

vim

syntasticを使っていると大きなファイルでsyntax checkなどするとしばらく応答が返らないことがよくある。neovimには非同期でjobを実行する機能があり、それを活かしたpluginとしてNeomakeというsyntasticと同様の機能をもつものがあることを知ったので使っ…

vimでコマンドの出力をキャプチャする

vim

特定のファイルにコマンドの出力を書き出したいときはこれ !をつけることで新規のファイルでも書き込める :redir! > file :echo 'aaa' :redir end これでaaaという文字列がfileに書かれる ちなみにredirはrediと省略して書ける また、rediはredirectの略 フ…

es6でreactを使うときのメモ

reactを触ってみた せっかくなので新しい形で使いたくes6の形にしたら、reactの元の書き方では動かないところがあったのでメモしておく 1. getInitialState # es6以前 var Component = React.createClass({ getInitialState: function() { return {data: []}…

macでmatplotlibによる画像出力

mac上でskimageを入れた際にエラーになったのでメモ pyenvにてinstallしたpython3.5にて、pipで入れたskimageによって画像を出力しようとした際エラーになった 発生したエラーはこちら >from skimage import io >image = io.imread('example.png') >io.imsho…

vimでnon-greedyなマッチ

vim

vimでnon-greedyなマッチを行うために正規表現を調べたのでメモ non-greedyなマッチを使いたい場合のusecase 以下の行でクォーテーション毎にそれぞれマッチしたい場合 'hoge', 'fuga' アスタリスクを使って書くと行頭から行末まで全体にマッチしてしまう # …

dynamoDBのpartition分割

aws

dynamoDBはstorage sizeとthroughputが大きくなるにつれてpartitonを増やしていく その際の挙動について調べたのでメモpartitionとprimary keyの関係について Partitions and Data Distribution - Amazon DynamoDBpartition分割時の挙動について Guidelines …

dynamoDBのitem size計算

aws

dynamoDBのitem sizeを計算する方法を調べたのでメモ基本式はこれで求まる 属性名のbyte数 + 属性値のbyte数属性名はstringであり、stringはUTF-8 バイナリエンコードの Unicodeで保持されている なのでasciiの文字を使っていれば1文字1byte属性値として使…

scala actorでチャットサーバ

scalaの勉強のためチャットサーバを書いてみた。actorも使ってみる。 仕様 仕様は以前haskellで書いたものを参考にした。 jsapachehtml.hatenablog.com 存在するチャネルは一つだけ(簡単のため) クライアントが接続してきたときに名前を尋ねる。入力された…