じぶんメモ

プログラミングのメモ、日常のメモとか。

2017-01-01から1年間の記事一覧

TensorflowとKerasを用いてmnistのCNNを構築してみる

コードは以下の通り。 Tensorflow・Kerasを使ってmnistの訓練を行う from keras.models import Sequential from keras.datasets import mnist from keras.layers.convolutional import Conv2D from keras.layers.pooling import MaxPooling2D from keras.lay…

TensorflowとKerasを使ってmnistの訓練と評価をしてみる

Tensorflow・Kerasとは(ザックリ) Tensorflowはpythonで使える機械学習のためのライブラリ Kerasは更にラッパーライブラリで、Tensorflowだと数百行かかるコードが数十行で済んだりする。 インストール方法 とりあえずpipで入れてみる。 $ pip install -U te…

【ゼロから作るDeep Learning】要点まとめ 第7章

7章 - 畳み込みニューラルネットワーク CNN(Convolutional Neural Network)は、畳み込み層、プーリング層からなる学習方法 基本的にはconv→relu→conv→relu→...→pool→conv→relu→conv→relu→...→pool→affine→softmaxの流れ conv→relu or conv→relu→poolが隠れ層…

【ゼロから作るDeep Learning】要点まとめ 第6章

6章 - 学習に関するテクニック 勾配法の種類 勾配法の種類はSGD, Momentum, AdaGrad, Adamがある。(AdaGrad,Adamが学習スピードが早い) 重みパラメータと活性化関数での出力値 重みパラメータの初期値は小さくすることで過学習を防げるが、0にすると各層で…

【ゼロから作るDeep Learning】要点まとめ 第4章, 第5章

4章 - ニューラルネットワークの精度を高めるためには 損失関数 ニューラルネットワークで出力された結果に対して、損失関数を使ってニューラルネットワークの精度の悪さを求める。 損失関数の引数は、ニューラルネットワークの出力結果と、正解ラベル(教師…

【ゼロから作るDeep Learning】要点まとめ 第3章ニューラルネットワーク

最近オライリー社から出版されている「ゼロから作るDeep Learning」を読み始めた。 数学の知識がない僕には結構難しかったので、備忘録として要点をまとめていこうと思う。 1,2章に関してはpythonの話や、ANDゲート等の基本情報的な内容が多いので、ここでは…

railsでポリモーフィック関連でインターフェースっぽく振る舞わせる

railsにもインターフェースはないのかな?と思い調べてみると、 ポリモーフィック関連というものを使うそうです。 例として、Article、Eventという二つのモデルを用意し、 その両方ともにCommentモデルをhas_manyの関係で保持させたいとします。 テーブル定…

has_manyな関連テーブルのレコードのカラムでソート

SQL

チャットとかchat(チャットルーム) has_many chat_messages(チャットのメッセージ)みたいなテーブル構造になると思うが、 この時、チャットルームをメッセージが来た順に並び変えたいとかあると思う。 メッセージの投稿日時がmaxのもので比較してソートする…

Sweet Alertで簡単に綺麗なアラート画面を作る

普通にjavascriptでalert()を使うと味気ないアラートウィンドウしか出ないが、sweet alertを使うと簡単に綺麗なアラート画面を出せる。 jQuery依存でなくプレーンなjavascriptで使用できる。 導入 npmでも公式サイトでjsとcssを落とすでもOK。 落としてきた…

モーダルのサンプル

なにかとモーダルが使われているサービスが多く、気になったので調べた。 z-indexを使ってモーダルと、モーダルの後ろの画面を隠すためのオーバーレイを前面にするのがポイント。 あとはボタン押下でdisplay: noneを解除してあげればOK。 <html lang="ja"> <head> <title>test</title> <link href="test.css" rel="stylesheet" type="text/css" /> </link></head></html>

Railsでgemなしでログイン機能を実装

はじめに Railsでは便利なログイン機能を実装してくれるdeviseやsorceryといったgemが存在します。 導入するだけでsign_inやsign_outといったログインに必要なメソッドを自動的に生成してくれますが、 カスタマイズをする場合には、内部のソースを解読する必…

rspec内でCSFR対策を有効にする

railsでpost送信を行う際に、画面を経由しないリクエストには422が返却される。 これはrailsのCSRF対策である、ActionController::Base.allow_forgery_protectionがtrueになり、ApplicationControllerの protect_from_forgery with: :exceptionで、CSRFチェ…

direnvを使ってディレクトリごとの環境変数設定を行う

direnvを使って、そのディレクトリ下でのみ有効な環境変数を設定する。 前提mac。 $ brew install direnv インストール後、.bashrcまたは.bash_profileに以下の1行を追加 # bashの場合 eval "$(direnv hook bash)" あとは環境変数を設定したいディレクトリ…

railsのモデルに、特定の条件下で動くvalidationを追加

ifを使用した条件分岐 例えば、bという項目がtrueの場合のみaの値は必須にしたい、とかあると思う。 with_optionsメソッドを使用して以下のように実装することができる。 class Post < ActiveRecord::Base # ifオプションで条件に合致する場合のみvalidates…

railsでenumを使う

modelに記述する。 class Post < ActiveRecord::Base enum status: { created: 0, drafted: 1, canceled: 2 } end こうすることで、Post.statusesとして、各Enumにアクセスすることができる。 pry(main)> Post.statuses # => {"created"=>0, "drafted"=>1, "…