タグ

ブックマーク / nishiohirokazu.hatenadiary.org (10)

  • TensorFlow Playgroundはニューラルネットを理解するのにおススメ - 西尾泰和のはてなダイアリー

    ネットワークの重みや各ニューロンがどういう入力の時に発火するのかが、学習していく過程で各時刻可視化されてとても良い教材です。 http://playground.tensorflow.org/ うずまきのデータセットに関して「中間層が1層しかないとうずまき(線形非分離な問題)は解けない」という誤解があるようなので、まずは1層でできるという絵を紹介。なお僕のタイムライン上では id:a2c が僕より先に気付いていたことを名誉のために言及しておきます。 で、じゃあよく言われる「線形非分離な問題が解けない」ってのはどういうことか。それはこんな問題設定。入力に適当な係数を掛けて足し合わせただけでは適切な境界を作ることができません。 こういうケースでは中間層を追加すると、中間層が入力の非線形な組み合わせを担当してくれるおかげで解けなかった問題が解けるようになります。 1つ目のデータセットでは特徴量の

    TensorFlow Playgroundはニューラルネットを理解するのにおススメ - 西尾泰和のはてなダイアリー
  • Bloom filterのシンプルな実装 - 西尾泰和のはてなダイアリー

    Bloom filterは指定されたものがリストに含まれるならばTrue、含まれないならばFalseを返すようなデータ構造である。もちろん、単純にリストを保持するだけでもリストに含まれるかどうかの判定は可能だが、Bloom filterのメリットはオリジナルのリストを保存しておく必要がないという点にある。そのためメモリの消費量を格段に節約することができる。しかし、そのメモリ効率の代償として多少正確性が失われる。Bloom filterは指定されたものがリストにない場合でもたまにTrueを返すのだ。しかし、間違ってTrueを返す確率はあらかじめ計算することができるので、誤差が許容できる範囲であれば問題なく使うことができる。 下記はアルゴリズム勉強用のシンプルな実装である。 SIZE = 1987 def hashes(s): xs = [0, 0, 0] for c in s: o = or

    Bloom filterのシンプルな実装 - 西尾泰和のはてなダイアリー
  • JavaScriptクイズ「x + 0 == x - 0」 - 西尾泰和のはてなダイアリー

    以下の20問のconsole.logで何が出力されるか当ててみよう。 var x = {}; console.log(x + 0 == x - 0) var x = []; console.log(x + 0 == x - 0) var x = (function(){}); console.log(x + 0 == x - 0) var x = null; console.log(x + 0 == x - 0) var x = undefined; console.log(x + 0 == x - 0) var x = Infinity; console.log(x + 0 == x - 0) var x = Array; console.log(x + 0 == x - 0) var x = 0; console.log(x + 0 == x - 0) var x = false; c

    JavaScriptクイズ「x + 0 == x - 0」 - 西尾泰和のはてなダイアリー
  • git addとgit commitのundo方法(ver.2) - 西尾泰和のはてなダイアリー

    チートシート作りの練習としてとりあえずaddとcommitで何が起きて、各段階でのundo方法がなんなのかを図にしてみた(注:間違いがあるので最後まで読んでね) 縦3つでセットで1つの時点だってのがわかりにくいのでもうちょっと縦幅を縮めた方がいいのかもなぁ? あ、あと下の一番右だけ省略されているHEADを明示してみたけど、そこを明示するなら右から二番目も明示すべきだし、それをやると長過ぎてうっとうしいからやっぱ両方省略した方がいいかな。 p.s. 左端のgit rm Aはgit rm --cached Aの間違い。ここでgit resetではダメなのは、この時点ではまだinitial commitができていないから。 git resetにを指定できるのは--hardや--softの付いていない時だけだった…。checkoutを使うのがよさそう。thanks id:Yuichirou ! v

    git addとgit commitのundo方法(ver.2) - 西尾泰和のはてなダイアリー
    gom68
    gom68 2011/05/19
  • git commitしてもindexは更新されない - 西尾泰和のはてなダイアリー

    てっきり普段はindexは空で、git addすると追加されて、commitするとその中身がコミットオブジェクトに移されてindexはまた空っぽになるんだと思ってた。メンタルモデルが間違っていた。 下のようなスクリプトを書いて、gitでの操作のたびに何が変更されたか確認できるようにして遊んでいたんだけど、commitしてもindexは変更されない。このスクリプトで補足できてないだけかと思ってhexdump .git/index | diff - old_indexしても変化なし。 f$ git add diveintogit.py f$ python diveintogit.py -d branches: no change tags: no change objs: +: ('0079cc66b9e7c929ee290b5a2d8be4ce690df461', 'blob') index

    git commitしてもindexは更新されない - 西尾泰和のはてなダイアリー
    gom68
    gom68 2011/05/07
  • NTFSで同一フォルダに100万個くらいファイルを置いてみた - 西尾泰和のはてなダイアリー

    NTFSで、フォルダにファイルを沢山置くと遅くなる感じがするから、1個4KBのファイルを100万個置くのを、1000個置くのに何秒かかったかのデータを取ってプロットしてみた。20000件までの間だけ何件か0.5秒未満で書けているとか数万件くらいまでは数が少ない方がパフォーマンスよさげではあるけど、それを越えたら大差ないね。平均1.8秒ぐらい。 今度気が向いたら10件ごととかで5万まで計測しよう。

    NTFSで同一フォルダに100万個くらいファイルを置いてみた - 西尾泰和のはてなダイアリー
    gom68
    gom68 2010/12/07
  • Pythonで2つの文字列がa == bだけどもnot(a is b)であるようなケース - 西尾泰和のはてなダイアリー

    文字列の比較で疑問から引用: d1 = 'a a' d2 = 'a a' id(d1) # => 27605856 id(d2) # => 27606080 えっなんで? 文字列は変更不可能なオブジェクトなので普通はisじゃなくて==で比較をするんだけどね。空白で区切られた同一内容の文字列を2つ、対話的環境で個別に作成してからisで比較するとFalseになるようだ。 Python 2.6.1 (r261:67515, Jan 25 2009, 00:21:48) [GCC 4.0.1 (Apple Inc. build 5490)] on darwin >>> a = "a a" >>> b = "a a" >>> a is b False しかし、一つの式で書くとTrue >>> "a a" is "a a" True 一つの関数にまとめてもTrue >>> def foo(): ...

    Pythonで2つの文字列がa == bだけどもnot(a is b)であるようなケース - 西尾泰和のはてなダイアリー
    gom68
    gom68 2009/12/14
  • "Did You Know"和訳 - 西尾泰和のはてなダイアリー

    この動画は一見の価値がある。英語にひるんで見ない人がいるともったいないので和訳した。(追記: これはバージョン3.0らしい。) (追記:字幕付きのバージョンがニコニコ動画で公開されました) 知っていましたか? もしあなたが中国で「100万人に1人の逸材」なら… あなたみたいな人が国内に1300人います。 中国はまもなく世界一英語が話されている国になります。 インドの「IQが高い側から25%」は アメリカの全人口より多い。 つまりアメリカに生まれる全ての子供よりインドに生まれる優等生の方が多い。 知っていましたか? 2010年に需要のある仕事上位10位は 2004年にはまだ存在していませんでした。 今私たちは学生を教えています。まだ存在しない仕事に備えて。 まだ発明されていない技術を使って まだ知らない問題を解く仕事に備えて。 米国労働省は今の学生は10〜14の仕事につくと推測しています 3

    "Did You Know"和訳 - 西尾泰和のはてなダイアリー
  • そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー

    以前、とあるシステムのソースコードを読む機会があったのだけどあまりにひどかった。あのひどいコードでまあまあまともに動いているというのが逆に信じられない。今日昼ご飯をべながら少し話していたのだけど意外と知られていないようなので、話せる範囲でいかにひどいのか説明してみようと思う。 まず、ソースコードが大雑把に見積もって3750万行あるのだけど、その中でまともに機能しているコードは3%しかない。10分の1程度のソースコードで同程度の機能を実現しているシステムもあるのでほんとあのシステムのコードはゴミだと言っても過言じゃない(*1) プログラマとしてはなんでそのプロジェクトはそんな状態になってしまったのか気になるところだけども、まあ多くのプロジェクト同様、真相を知る人は誰もいない。でもまあ、実際に機能しているコードのコピーみたいなものがあちこちに散らばっていることからしてコピー&ペーストが盛んに

    そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー
  • 僕のサイボウズラボでの仕事について - 西尾泰和のはてなダイアリー

    よく質問されるけども、いつもうまく答えられない。 今回、ちょっといい説明方法が思いついたのでメモしておく。 僕のサイボウズラボでの仕事は、3年で1個の「イノベーティブななにか」を作ること。そして、そのために3年で10個の「リリースできるサービス/利用できる技術」を作ること。そしてそのために3年で100個の「プロトタイプ」を作ること。そしてそのために3年で1000個の「新しいアイデア」を思いつくこと。 逆に言えば、3年で1000個思いつき、100個作り、10個リリースして、1個のイノベーションを起こすこと。 イノベーションは狙って起こすことができないので、こうやるしかないのだと思う。当は、1000個の「新しいアイデア」を出すために10000個の「既存のアイデア」を学ぶべきなのだけど、そこはまだまだ追いついていない。 - あ、なんかブックマークがいっぱいついてる…。誤解がないように補足してお

    僕のサイボウズラボでの仕事について - 西尾泰和のはてなダイアリー
    gom68
    gom68 2007/12/25
  • 1