タグ

ブックマーク / memo.sugyan.com (23)

  • SIMDによる将棋Bitboard計算の高速化 - すぎゃーんメモ

    自作Rust将棋合法手生成ライブラリ、計算の高速化のためBitboardの128bit計算をSIMDで行うようx86_64のAVX2、AArch64のNEON、wasm32のsimd128で動くようにそれぞれ実装して 各環境で多少速く探索できるようになった。https://t.co/h7Dz3X6BhT— すぎゃーん💯 (@sugyan) July 2, 2022 ということでSIMDでの高速化のメモ。 SIMDとは 実装 x86_64 基演算 飛び利き計算 AArch64 同値判定、ゼロ値判定 飛び利き計算 Iterator WebAssembly Benchmark x86_64 AArch64 WebAssembly 感想 SIMDとは ja.wikipedia.org の通り、複数のデータを1命令で同時に演算する、というもの。 将棋Bitboardは81マスのデータを表現する

    SIMDによる将棋Bitboard計算の高速化 - すぎゃーんメモ
    Nyoho
    Nyoho 2022/07/08
  • Rustでつくる詰将棋Solver - すぎゃーんメモ

    ついカッとなって先週からRustで詰将棋ソルバを書き始めてしまい、ようやくdf-pnで何らかの解答を出せるようになったところ。ここからもうちょっと調整していくぞ、、 pic.twitter.com/XM9iPJqocv— すぎゃーん💯 (@sugyan) November 2, 2021 というわけで突然Rustで詰将棋ソルバを作りたくなり、作った。 github.com 現時点ではまだ完成度は低くて6割ほどかな…。 とはいえそこらの素直な詰将棋問題なら普通に解けると思う。 冒頭の画像は看寿賞作品の3手詰「新たなる殺意」を2秒弱で解いたもの。 先行事例 将棋プログラムの多くはC++で書かれていて 最近はRustも増えてきているのかな? しかし「詰将棋を解く」ことに特化しているものはあまり多くはなさそうだった。 なかでもRustで書かれているものはna2hiroさんによるものくらいしか無さ

    Rustでつくる詰将棋Solver - すぎゃーんメモ
    Nyoho
    Nyoho 2021/11/11
    df-pnアルゴリズム
  • N番目の素数を求める - すぎゃーんメモ

    SNSなどで話題になっていたので調べてみたら勉強になったのでメモ。 環境 Pythonでの実装例 例1 例2 例3 エラトステネスの篩 Rustでの実装例 試し割り法 エラトステネスの篩 アトキンの篩 おまけ: GMP Benchmark 高速化のテクニック 上限個数を見積もる Wheel factorization オチ Repository References 環境 手元のMacBook Pro 13-inchの開発機で実験した。 2.8 GHz Intel Core i7 16 GB 2133 MHz LPDDR3 Pythonでの実装例 例1 最も単純に「2以上p未満のすべての数で割ってみて余りが0にならなかったら素数」とする、brute force 的なアプローチ。 import cProfile import io import pstats import sys def m

    N番目の素数を求める - すぎゃーんメモ
    Nyoho
    Nyoho 2021/02/06
  • ターミナル上のEmacsで本来使えない"Ctrlキー+何か"を使う方法 - すぎゃーんメモ

    ターミナルエミュレータに"Ctrlキー+何か"で送信できる範囲 - すぎゃーんメモ の記事の続き。コメントにてid:masutaka26さんに教えていただきました。こんな方法があるそうで。 工夫と趣向と分別と。ターミナルのEmacsでも特殊キーコンボ - 工夫と趣向と分別と。 全然知りませんでした。Emacsにはデフォルトで以下のように修飾キーを押しながらキーを押したとみなすような関数が定義されているそうで C-x @ S event-apply-shift-modifier C-x @ a event-apply-alt-modifier C-x @ c event-apply-control-modifier C-x @ h event-apply-hyper-modifier C-x @ m event-apply-meta-modifier C-x @ s event-apply-

    ターミナル上のEmacsで本来使えない"Ctrlキー+何か"を使う方法 - すぎゃーんメモ
    Nyoho
    Nyoho 2019/09/19
    へー! C-x @ c でコントロール “Emacsにはデフォルトで以下のように修飾キーを押しながらキーを押したとみなすような関数が定義されているそう”
  • df-pnアルゴリズムを用いた詰将棋Solverによる最善解・余詰の導出 - すぎゃーんメモ

    以前書いた、詰将棋問題生成の続き。 memo.sugyan.com 逆算による詰将棋の問題生成の方法自体は悪くないとして (バグによって有り得ない局面が出来上がったりしてしまったりもしたけど)、正しく詰将棋問題として成立するものが出来上がっているかどうかを検証するためのSolverが必要不可欠であり、これのパフォーマンスが生成のパフォーマンスにも影響してくる、というようなことを書いた。 実際、前回の記事のときに実装したSolverでは 総当たり的に探索するのは3〜5手が限界 詰将棋のルールに則る動きに限定しても、有り得る局面は指数関数的に増加する 合駒が絡む問題に対して正しく解が導けないことがある 先の展開まで読まないと無駄な合駒かどうかの判定ができない といった問題があった。 df-pnアルゴリズムによる探索 2002年の論文「df-pn アルゴリズムの詰将棋を解くプログラムへの応用」が

    df-pnアルゴリズムを用いた詰将棋Solverによる最善解・余詰の導出 - すぎゃーんメモ
    Nyoho
    Nyoho 2018/02/27
    これは面白そう
  • 逆算方式による詰将棋の問題生成プログラム - すぎゃーんメモ

    将棋を始めた ので、詰将棋を毎日のように解いているのだけど、せっかくなら詰将棋の問題を自動生成してみたい、と思って試してみた。 前提知識 詰将棋とはどんなものか 攻め方(先手)が玉方(後手)の玉を詰ますのが目的。 攻め方は必ず王手をかける(玉方は必ず王手をはずす)。 玉方は盤上と攻め方の持駒以外すべての駒(ただし玉は除く)を合駒として使用できる。 玉方は最善を尽くし、最も長く手数がかかるように逃げる。 玉方は無駄な合駒をしない。 その他は指し将棋のルール通り。二歩、打ち歩詰め、行き所のない駒、連続王手の千日手はいけない。 (日将棋連盟の詰将棋ページより) 手法 コンピュータによる詰将棋の解答・問題生成というのは20年くらい前から既に様々な論文などで研究されているようだ。生成については、主に「ランダム法」「逆算法」といった方式があるらしい。 あまり論文にちゃんと目を通して調べてはいないけど

    逆算方式による詰将棋の問題生成プログラム - すぎゃーんメモ
  • ターミナルでの炎上のさせ方 - すぎゃーんメモ

    話題になってたコレが面白いなーと思って ~簡単!炎上のさせ方講座~ pic.twitter.com/fKSOXj1Xeb— じゃがりきん (@jagarikin) 2017年8月7日 ターミナル上でそれっぽく再現させてみた。 こんなかんじ。 (これの作成は以前に作ったttyrecからGIFアニ生成やつ にて) memo.sugyan.com そんなに細かくなくても大丈夫であればターミナルの縦横のマスでもできそうだなーと思って 256色のターミナルなら黒→赤→黄→白の間でも12段階くらいの変化が出せるので 描画系はtermbox-goを使えば簡単に出来た。色はRGBでは指定できなそうだったのでカラーコードを直指定で。 github.com いちおう最下段の値、ノイズの載せ方を少し工夫した。 最下段は前のコマからの差分が大きくなりすぎないように変化量を制限。 あとどうしてもチラつきやすいので1

    ターミナルでの炎上のさせ方 - すぎゃーんメモ
    Nyoho
    Nyoho 2017/08/09
    素晴らしい
  • 複数のbufferの消し方を知らなかった件 - すぎゃーんメモ

    当に知らなかったので、恥ずかしがらずに聞いてみた。 すぎゃーん on Twitter: "いまだに複数のbufferを一気に閉じる方法を知らないんですが、どうすればいいんでしょうか #emacs" 教えていただきました!皆様ありがとうございます。 twsigma @sugyan C-x C-c (笑) 2010/02/19(金) 16:06:17 fistfvck @sugyan M-x list-buffers でマークして d じゃ駄目かな 2010/02/19(金) 15:41:42 itawasa @sugyan やりたいことと違うのかもしれませんが、C-xC-b して、削除したいバッファを k でマークして、x で削除実行、って全然一気じゃないですね f(--); 2010/02/19(金) 15:35:26 peccul @sugyan 自分はC-xC-bから閉じたいバッファ

    Nyoho
    Nyoho 2017/01/31
    複数選択。helmでも同じだった。
  • TensorFlowによるDCGANでアイドルの顔画像生成 その後の実験など - すぎゃーんメモ

    memo.sugyan.com の続編。 あれから色々な変更しつつ実験してみたりしたのでその記録。 結論を先に書くと、これくらい改善した。 DCGAN ざっくりおさらい Generator: 乱数の入力から画像を生成する Discriminator: 入力した画像がGeneratorが生成したものか学習データのものかを判別する という2種類のネットワークを用意し、お互いを騙す・見破るように学習を行うことで Generatorが学習データそっくりの画像を生成できるようになる、というもの 学習用画像の増加 前回の記事では90人の顔画像データから生成していたけど、あれから収集を続けて もう少し多く集まったので、今回は260人から集めた顔画像100点ずつ、計26,000件を学習に使用した。 Feature matching openai.com の記事で紹介されている "Improved Tech

    TensorFlowによるDCGANでアイドルの顔画像生成 その後の実験など - すぎゃーんメモ
    Nyoho
    Nyoho 2016/10/12
    かなりすごい。
  • 「TensorFlowはじめました」を読んだ - すぎゃーんメモ

    TensorFlowはじめました 実践!最新Googleマシンラーニング (NextPublishing) 作者: 有山圭二出版社/メーカー: インプレスR&D発売日: 2016/07/29メディア: Kindle版この商品を含むブログを見る 著者の有山さんとは、TensorFlowでの独自の画像データセットの分類に取り組む同士(?)として勉強会などでお話する機会があり、そんな縁もありまして有り難いことに献ということで読ませていただくことができました。 第1章の「TensorFlowの基礎」では最初にまずデータフローグラフの「構築」と「実行」で分かれているという概念について、丁寧に説明されていてとても良かったです。いきなり何も知らずに公式Tutorialだけ始めていた自分は、こういう概念について理解するのが遅かった…。 第2章ではCIFAR-10の学習モデルと評価。公式Tutorialの

    「TensorFlowはじめました」を読んだ - すぎゃーんメモ
  • TensorFlowによるDCGANでアイドルの顔画像生成 - すぎゃーんメモ

    アイドル顔識別のためのデータ収集 をコツコツ続けて それなりに集まってきたし、これを使って別のことも…ということでDCGANを使ったDeep Learningによるアイドルの顔画像の「生成」をやってみた。 まだだいぶ歪んでいたりで あまりキレイじゃないけど…。顔画像を多く収集できているアイドル90人の顔画像からそれぞれ120件を抽出した合計10800件をもとに学習させて生成させたもの。 分類タスクとは逆方向の変換、複数のモデル定義などがあってなかなか理解が難しい部分もあったけど、作ってみるとそこまで難しくはなく、出来上がっていく過程を見るのが楽しいし とても面白い。 DCGANとは "Deep Convolutional Generative Adversarial Networks"、略してDCGAN。こちらの論文で有名になった、のかな? [1511.06434] Unsupervise

    TensorFlowによるDCGANでアイドルの顔画像生成 - すぎゃーんメモ
    Nyoho
    Nyoho 2016/05/16
    おもしろい。まだ使いこなせてなくてここまでできないけど参考にしよう。
  • TensorFlowでのDeep Learningによるアイドルの顔識別 のためのデータ作成 - すぎゃーんメモ

    続・TensorFlowでのDeep Learningによるアイドルの顔識別 - すぎゃーんメモ の続き、というかなんというか。 前回までは「ももいろクローバーZのメンバー5人の顔を識別する」というお題でやっていたけど、対象をより広範囲に拡大してみる。 様々なアイドル、応援アプリによる自撮り投稿 あまり知られていないかもしれないけど、世の中にはものすごい数のアイドルが存在しており、毎日どこかで誰かがステージに立ち 歌って踊って頑張っている。まだまだ知名度は低くても、年間何百という頻度でライブを中心に活動している、所謂「ライブアイドル」。俗に「地下アイドル」と言ったりする。 ライブアイドル - Wikipedia そういったアイドルさんたち 活動方針も様々だけど、大抵の子たちはブログやTwitterを中心としてWebメディアも活用して積極的に情報や近況を発信していたりする。 そんな中、近年登

    TensorFlowでのDeep Learningによるアイドルの顔識別 のためのデータ作成 - すぎゃーんメモ
  • TensorFlowによるディープラーニングで、アイドルの顔を識別する - すぎゃーんメモ

    以前は MNISTの例を使って画像識別を試してみた けど、次はカラー画像についての識別を試してみる。 「アイドルなんてみんな同じ顔に見える」って 最近も言われてるのかどうか知らないけど、自分もつい5年前くらいまではそう思っていたわけで。その識別を機械学習でやってみよう という試み。 最近はほとんどライブに行かなくなってしまったけど大好きなももいろクローバーZちゃんを題材にしてみることに。 5人のメンバーの顔は機械学習によってどれくらい分類できるようになるのか?? CIFAR-10 CIFAR-10 という、32×32サイズのカラー画像を10種類のクラスに分類する識別課題があり、そのデータセットが公開されている。これを実際にTensorFlowで学習するための畳み込みニューラルネットワークのモデルや関数などがtensorflow.models.image.cifar10パッケージに同梱されて

    TensorFlowによるディープラーニングで、アイドルの顔を識別する - すぎゃーんメモ
  • Twitterの新しいStreaming API「ChirpUserStreams」がすごすぎる件 - すぎゃーんメモ

    最近発表されて、一部で話題を呼んでいるTwitterの新しいStreaming API「ChirpUserStreams」。 まだdeveloperへのpreviewリリースということでプロダクトに使うようなことはできないけど。 http://apiwiki.twitter.com/ChirpUserStreams 今までのStreaming APIでは基的に public timelineから、指定したキーワードを含む発言を拾う 指定したユーザーの発言を拾う というものだった(はず)。検索系としては便利だけど、home_timelineのように自分がフォローしているユーザーの発言をStreamingで得ようとすると全idを繋げたものをリクエストパラメータとして送らないといけなかったりで、あまりカッコよくない形になってしまっていた。 ところが今回使えるようになった「ChirpUserSt

    Twitterの新しいStreaming API「ChirpUserStreams」がすごすぎる件 - すぎゃーんメモ
  • TensorFlowでのMNIST学習結果を、誰でも実際に手書きして試せるようになった - すぎゃーんメモ

    先日、 TensorFlowでのMNIST学習結果を、実際に手書きして試す - すぎゃーんメモ という記事を書いて、「Herokuで動かそうとしたが上手くいかず〜〜」ということだったのだけど、その後も幾つか変更があって そのおかげなのか何なのか分からないけどもう一度Heroku環境用のpipパッケージをビルドしてみたら上手く出来て、それを同梱することで無事にHeroku環境でも動くようになった。 https://tensorflow-mnist.herokuapp.com/ これでブラウザさえあれば誰でも学習結果を試すことができますね。色んな数字を書いて試して遊んでみてください。 誰かスマホ対応してくれると嬉しいなー。。

    TensorFlowでのMNIST学習結果を、誰でも実際に手書きして試せるようになった - すぎゃーんメモ
  • perl6なので6種類の記号だけでプログラムを書く - すぎゃーんメモ

    Perl6で記号Hello worldする - すぎゃーんメモ という記事を書いたところ なるほど、文字の種類が少なくて簡単 / 他3コメント URL “Perl6で記号Hello worldする - すぎゃーんメモ” URL 2015-10-22 19:30:57 via Hatena というブコメをいただいたけど、あの記事では適当に生成したので 11種類もの記号を使っていて まだちょっと多いかな、という感じがした。 ので最大限に使う文字種類を減らして、6種類の記号だけでHello worldを書いてみた。 ::('('~^(~::('~'~^~(^(''~~''))~':'~^~(^(''~~''))~^'~'~^'('~^')'~')'~^':'~^'~')(')'~^~(^(''~~''))~^'('~'^'~^~(^(''~~''))~^':'~^'~'~'^'~^':'~^'~

    perl6なので6種類の記号だけでプログラムを書く - すぎゃーんメモ
    Nyoho
    Nyoho 2015/10/24
    perl 6 すごい
  • ターミナル操作の記録(ttyrec)からGIFアニメを生成するツールを作った - すぎゃーんメモ

    ttyrec で録画したデータを使ってターミナル上で再生しつつ、そのスクリーンキャプチャを使ってアニメーションGIFを生成するツールをGoで作ってみた。 https://github.com/sugyan/ttygif Releases Mac, Linux Desktopで動作。再生速度はオプションで変更可能。 背景 percolを使ってターミナル操作を早く、便利に。 - すぎゃーんメモ のような記事を書いたりする際に、ターミナル操作を録画してGIFアニメにしたい需要があり。 そういった用途に使える汎用のデスクトップ録画ツールとしてはLICEcapやGifzoなどがある。 Cockos Incorporated | LICEcap http://gifzo.net/ これらはWindows, OSXあたりが対象で、Linuxの場合はまた他のツールがあるらしい(よく知らない)。 汎用的なキ

    ターミナル操作の記録(ttyrec)からGIFアニメを生成するツールを作った - すぎゃーんメモ
    Nyoho
    Nyoho 2014/08/18
    ttyrec から! これは便利ですなあ
  • はじめてのGo - すぎゃーんメモ

    今さらながら、Goをもう少し読み書きできるようになりたいな、と思い。 A Tour of Go を一通り読んで、 GitHub - mattn/twty: command-line twitter client written in golang go-oauth/examples/twitter at master · garyburd/go-oauth · GitHub などを参考にしつつ、写経というかんじで Twitterのtimelineを取得するものをまずは書いてみた。 package main import ( "encoding/json" "fmt" "github.com/garyburd/go-oauth/oauth" "github.com/typester/go-pit" "log" "net/http" "os/exec" "runtime" ) func mai

    はじめてのGo - すぎゃーんメモ
    Nyoho
    Nyoho 2014/06/25
  • percolを使ってターミナル操作を早く、便利に。 - すぎゃーんメモ

    先日、shell勉強会で「zawを使ってシェル操作を快適に」というお話を聴いて、自分ももう少しそのあたりの環境を整えよう、と思い立った。 nanapi勉強会 vol2 - Shellの活用でこれだけ毎日が便利になる - nanapi勉強会 | Doorkeeper zawで快適シェル生活 // Speaker Deck 自分が使う選択をしたのは zaw ではなく percol 。 軽く調べてみたかんじでは zawってのは設定してある(もしくは自作する)決められたsourceを使って決められた操作を行うもので、zshに密接に結び付いているツールで。percolはそういうのではなく純粋に「入力をフィルタリングする」だけのツールなので、パイプなどを使って各コマンドと組み合わせることで色々な使い方ができそう。 percolの導入 https://github.com/mooz/percol Pyt

    percolを使ってターミナル操作を早く、便利に。 - すぎゃーんメモ
  • 64通りのkamipoを出力する - すぎゃーんメモ

    発端 @Kamipo 2014-04-22 21:06:52 via Twitter for Mac to @kamipo @sugyan 2014-04-22 21:06:57 via YoruFukurou to @sugyan @KAMIPO 2014-04-22 21:10:34 via Twitter for Mac to @kamipo @kamipO 2014-04-22 21:10:59 via Twitter for Mac to @kamipo @kamIpo 2014-04-22 21:11:04 via Twitter for Mac to @kamipo @kAmipo 2014-04-22 21:11:10 via Twitter for Mac to @kamipo @KaMiPo 2014-04-22 21:11:33 via Twitter for Mac

    64通りのkamipoを出力する - すぎゃーんメモ
    Nyoho
    Nyoho 2014/04/25