最近はzennで記事を書いています

最近はzennで記事を書いています。 zenn.dev

HatenaBlogが使いにくい

もう我慢の限界。。HatenaBlogが使いにく過ぎる。。 以下に以降した。 list - GROWI

Transformerのメモ

Transformer - Transformerの特徴のひとつは、学習を並列実行させることができることである。 RNNでは、時系列毎に結果を渡していく必要があるためシーケンシャルに処理をする必要がある。 - Transformerでは、並列学習させるため、以下の機構がある。 - Enc…

Attentionのメモ

Attention Attentionは、大きく分けて2種類ある。 seq2seqで使用するSource-Target-Attentionと、自分自身に対するSelf-Attention Attentionは、Mapからキーを元に値を選択する処理である。 どこに注意すればよいかを、キーから選択させるようにする。 よい…

seq2seq

PyTorchでSeq2Seqを実装してみた を試してみる。 引き算する数式を文字列で認識して、結果を出力する。 データはランダムに数字を生成して、実際に引き算して作成できるから簡単に用意できる。 seq2seqは、EncoderとDecoderの2種類のネットワークを作成して…

RNN(LSTM)を使ってみる

今日は、以下を参考にLSTMを動かしてみる。 qiita.com PyTorchを使って、「livedoorニュースコーパス」のニュース記事のタイトルの分類を行う。 データの読み込みには、Pandasを使い、形態素解析には、Mecabを使う。 PyTorchのデータ読み込みは、DataLoader…

ゼロから作るDeep Learning2(その3)seq2seq

「7章 RNNによる文章生成」のメモ。 この章では、seq2seqと呼ばれる、時系列データから別の時系列データへ変換するニューラルネットワークを扱う。自然言語処理だと、翻訳や予約等に使われ、Encoder-Decoderモデルとも言う。 Encoder 単語列の分散表現から文…

ゼロから作るDeep Learning2(その2)

「ゼロから作るDeep Learning2」の続きメモ。 「5章 リカレントニューラルネットワーク(RNN)」 参考動画 www.youtube.com 参考情報 deepage.net RNNは、時系列データを扱う。文章は、分散表現された単語が並んでいるため時系列データとなる。ネットワーク…

ゼロから作るDeep Learning2(その1)

「ゼロから作るDeep Learning2」を読んだ時のメモ。 www.oreilly.co.jp 「1章 ニューラルネットワークの復習」 復習の章。特にコメントなし。 「2章 自然言語と単語の分散表現」と「3章 word2vec」 自然言語処理では、単語をベクトルとして表そうとしている…

ニューラルネットワークの学習(その2)

「ゼロから作るDeep Learning」の続きの「6章 学習に関するテクニック」に関するメモ。 学習時の手法やハイパラメータについて書いてある。 取り敢えず、学習時のコードを読む時に覚えておいた方がよいものとして、 optimization(最適化)という単語とSGDと…

ニューラルネットワークの学習(その1)

ニューラル機械翻訳の理論的な所を見ていきたい。 まずは、Attentionを理解することを目標とする。 いきなりAttentionを理解することはできないので、まずニューラルネットワークから始める。 www.oreilly.co.jp これを読めばいいんじゃねと思うが、あくまで…

ニューラル機械翻訳の実践と理論(その2)

いよいよGoogle ColaboratoryでOpenNMTを実行する。 qiita.com 翻訳させるためには、まず学習させる必要がある。学習のために対訳コーパスと呼ばれるデータを用意する必要がある。例えば、英日翻訳の場合、英語の原文とそれを日本語訳した文章(対訳)が必要…

ニューラル機械翻訳の実践と理論(その1:番外編)

無料GPUクラウドのGoogle Colaboratoryだが、もちろん制限がある。 以下の場合にインスタンスが停止されてしまう。 【12時間ルール】新しいインスタンスを起動してから12時間経過 【90分ルール】ノートブックのセッションが切れてから90分経過 セッションタ…

ニューラル機械翻訳の実践と理論(その1)

本当は、「ニューラル機械翻訳の理論と実装」という題にしたかったのだけど理論がついてこないだろうから、理論は後回し。。 そして、実装まで踏み込めればよいのだけれど、難しいからまずは実践ということでこの題にしてみました。 ということでは、まずは…

Scala Stream(Scala関数型デザインより)

Scala Lazy!(Scala関数型デザインより) - shutdown -r nowからの続きで、Streamを扱う。 package example.laziness.stream import Stream._ trait Stream[+A] { def toList: List[A] = { @annotation.tailrec def go(s: Stream[A], acc: List[A]): List[A]…

Scala Lazy!(Scala関数型デザインより)

「Scala関数型デザイン&プログラミング」の「第 5 章 正格 と 遅延」 ストリームによる、Lazy処理を行う。 コード package example.laziness import Stream._ trait Stream[+A] { def toListRecursive: List[A] = this match { case Cons(h,t) => h() :: t()…

ScalaのEither(Scala関数型デザインより)

「Scala関数型デザイン&プログラミング」の「第 4 章 例外 を 使わ ない エラー 処理」のEither編。 package example sealed trait Either[+E,+A] { def map[B](f: A => B): Either[E, B] = this match { case Right(a) => Right(f(a)) case Left(e) => Left…

ScalaのOption(Scala関数型デザインより)

「Scala関数型デザイン&プログラミング」の「第 4 章 例外 を 使わ ない エラー 処理」をやる。 package example sealed trait Option[+A] { def map[B](f: A => B): Option[B] = this match { case None => None case Some(x) => Some(f(x)) } def flatMap[…

Scalaツリー遊び(Scala関数型デザインより)

リスト秋田県。 ツリーで遊ぶ。 2分木ツリーだよ。 package example sealed trait Tree[+A] case class Leaf[A](value: A) extends Tree[A] case class Branch[A](left: Tree[A], right: Tree[A]) extends Tree[A] object Tree { def size[A](t: Tree[A]): I…

Scalaリスト遊び3(Scala関数型デザインより)

まだまだリストで遊ぶぞ。 def concat[A](l: List[List[A]]): List[A] = foldRight(l)(Nil:List[A])(append) リストのリストを平らにする。やはりfoldRightで、右から、リストをappendしていく def map[A, B](as: List[A])(f: A => B): List[B] = foldRight(…

Scalaリスト遊び2(Scala関数型デザインより)

Scalaのリスト遊びの続き。 def reverse[A](l: List[A]): List[A] = foldLeft(l)(List[A]())((acc:List[A],h:A) => Cons(h,acc)) 引数で指定されたリストを逆にする。 def reverse[A](l: List[A]): List[A] = foldLeft(l)(List[A]())((acc:List[A],h:A) => C…

Scalaリスト遊び1(Scala関数型デザインより)

「Scala関数型デザイン&プログラミング」のリスト 第 3 章 関数 型 プログラミング の データ 構造 辺りのリスト コード package example sealed trait List[+A] case object Nil extends List[Nothing] case class Cons[+A](head: A, tail: List[A]) extend…

Scalaカレー(Scala関数型デザインより)

久しぶりのブログ更新です。 最近、Scalaを復習中。 Scalaの関数型部分をよく理解せずに使っていたので、すごいHaskell本を読んで さらに「Scala関数型デザイン&プログラミング」を読んでいる。 「2. 6 型 に従う 実装」のカリー化 まず最初に、以下のコマン…

TechCrunch Hackathon Osakaに参加して来ました

久しぶりのブログ更新になってしまった。 TechCrunch Hackathon Osakaに参加して来ました。1年ぶりのハッカソンです。 前回が同じ大阪市主催の「ものづくりハッカソン」1回目でした。 そこで一緒のチームになった大学生(当時)、現在、大学院生1年目のや…

「ものアプリハッカソン」というイベントに参加してきました

ものアプリハッカソン 1月の26日(土)、27日(日)の2日間にわたって「ものアプリハッカソン」というイベントに参加してきました。 プログラム系の「ハッカソン」はよくあるのですが、ハードウェア系のものづくりを含めた「ハッカソン」は世界的にみても珍…

ARToolKit on Ubuntu 12.10 64bit

今更ながら、ARToolKitで遊んでみようと思い環境構築。Ubuntu 12.10の64bit版にインストールしてみた。ARToolKitは、2.72.1を使用。http://www.kameda-lab.org/_local/imagelab.tsukuba.ac.jp/ubuntu1004+opencv21/ARToolKitk/index-j.htmlやGitHub - lentin…

MPLABXをv1.51にバージョンアップ

PIC

新しい環境「Ubuntu 12.10」を構築したので、そこにMPLABXのv1.51をインストールしてみた。 v1.51は、JDK6が入っていなくても大丈夫になっている。JDK7しか入れていないのに大丈夫だった。それで気をよくしていたのだが、日本語が文字化け。。 ということで…

MAPLABXに移行中

MAPLABからMAPLABXに移行してみた。 MAPLABをさわってから、MAPLABXをさわると、いろいろなオプションや設定の意味が少しはわかるようになっていた。まだ、謎オプションは沢山あるが、きっとそのうちわかるようになるだろう。。MAPLABXのバージョンは、1.30…

KBC-P18LAN2のサンプルコードのライブラリをバージョンアップ

「KBC-P18LAN2」のサンプルコードのライブラリを「v2010-10-19」から「v2012-08-22」にバージョンアップしてみた。 その時の備忘録。Microchip社のライブラリは、ヘッダファイルとコンパイルオプションを駆使して いろいろなPICといろいろな使用方法に対応で…

PICはじめました

H8ボードで遊んでいたら、PICで開発することになった。 とあるセンサから値を定期的に取って、ネットの向こう側にあるサーバに計算した値を投げるというやつだ。 最初、H8ボードで組もうと思っていたのだけど、ハードウェアを作ってくれる会社がPICの方がコ…