ほろ酔い開発日誌

AI企業のエンジニアのブログです。機械学習、Web開発の技術的お話、ビジネスチックなお話、日常のお役立ち情報など雑多な内容でお送りします。

エンジニアの記事のアウトプット先はどこがいい?(Qiita/note/blog)

はじめに

普段から記事を書くことは多いのですが、アウトプット先を複数抱えており、投稿先を自分の中で整理したいと思いました。結論として少し冬眠していたこのblogをアクティブにしようとする宣言の意味も大きいのですが、それと同時にアウトプット先について考えたこともまとめておこうというのがこの記事の趣旨です。

エンジニアが記事を書くことについて

最近では、エンジニアは積極的にアウトプットしたほうがいいという論調の文章を見かける機会も増えたような気もしますし、Youtuberをはじめとしたインフルエンサーの波をエンジニアも受けたのか、文章としてのアウトプットにとどまらず、動画の配信やインフルエンサー化する方もいらっしゃいます。私自身、3、4年くらい各所で記事を公開していまして、QiitaのContributionも現段階で7000を超えています。それによって、恩恵を受けるところもあり、アウトプットをすることはよいという立場にいます。最近はnoteでも記事を書いてみて、思うところもあり、blogに戻ってきたというところです。

続きを読む

Rails5.0.0.1からRails5.1.5へのアップデート

はじめに

Railsのプロジェクトのアップデートをしたのでそのときのメモをしておきます。 利用しているGem等に大きくよると思いますが、アップデートの際の参考にはなるかもしれません。

環境: MacOS Sierra

Rubyのアップデート

Rubyのバージョンも2.4.1から2.5.0へバージョンアップしました。 rbenvを使っています。

続きを読む

GoodfellowさんのGANのオススメ論文10選まとめ (2018/02)

GANの作者のGoodfellowさんがおすすめの10論文を教えていたので、みてみます。

()内はGoodfellowさんのコメント。基本的には最新の論文をすすめるということでICLR2018のオーラル論文等最新のが多め。

1. Progressive GANs

[1710.10196] Progressive Growing of GANs for Improved Quality, Stability, and Variation

(probably the highest quality images so far)

ICLR2018のオーラルに採択された論文。 高解像度の画像の生成において、段々と出力画像のサイズを大きくしていく方法を使っている。1つのGeneratorの中でlayerを少しずつ追加して学習を重ねていく。

イントロ含めてGANの流れもすごく置いやすくて読み物としてもいいので、参考論文追うと良さそう。

なんか低解像度から高解像度みたいなことをするといい結果が得られるよっていうのが結構あったりとかするけど、それをlayerひとつひとつ追加して行うという方法でまあ確かにそこまでやれば精度上がりそうという印象は受けた。

2. Spectral normalization

Spectral Normalization for Generative Adversarial Networks | OpenReview

(got GANs working on lots of classes, which has been hard)

こちらもICLR2018のオーラル論文より。Lipschitzs制約を使ってGANの学習を安定化させる。GANの学習の安定は重要な点のひとつなので大事かと。個人的にはLipschizs制約まわりはちゃんと勉強しなきゃな、、と思う次第です。

参考

Spectral Normalization for Generative Adversarial Networks · Issue #388 · arXivTimes/arXivTimes · GitHub

続きを読む

Java 配列部分型 ( ArrayStoreException )

普段、Javaはあまり使わないほうですがJavaの型について学んだことがあったのでメモします。(触れるのはJavaですが、型の問題としては一般に関わる話です。)

BがAの部分型であるときにBの配列をAの配列の部分型にしてよいか

ということに関してです。

続きを読む

Google Formで回答を受けたらSlackに通知する (Google Apps Script)

やったこと

タイトル通り、Google Formで回答を受け付けたらそれをSlackに通知します。 大体の手順は以下のような感じ。

  1. Google FormでFormの用意。また、回答をSpreadSheetに出すようにしておく。
  2. Slackのincoming webhookの用意をする。
  3. Google Apps Scriptを書く。

これだけ。以下の記事を見つけたのでこの記事に沿ってやりました。基本はこれを見て下さい。スクリプトの箇所はちょっと変えたので記録しておきます。あとその他説明。

続きを読む

Tensorflow run() vs eval() と InteractiveSession() vs Session()

はじめに

Tensorflowを使う際にコードによって若干の違いが見られたのでその点を理解しておきたいと思います。

  • run() と eval()
  • InteractiveSession() と Session()

この2点に違いについて説明します。

run() vs eval()

例えば、以下のような簡単なMLPの実装の一部を見て下さい。

続きを読む

RNNやWord2Vec関連のリンクの備忘録

RNN概要

LSTMについての説明が中心。 RNNのRがrecurrentの頭文字であることからも表されるように、RNNは同じネットワークを繰り返して前のネットワークで学習した結果の一部を後続のネットワークに渡すようなことをしています。それは前のネットワークの情報も現在のネットワークで使えるからいいよねって話なのですが、場合によっては直前の情報だけじゃなくて結構前のネットワークの情報も使いたいわけです。それをいい感じにやってくれるのがLSTMというわけです。以下の記事がこのあたりの説明をもっとちゃんと、詳しくしてくれてる記事です。 最近のアテンションというやつについても機会があればまとめたいところです。

続きを読む