読者です 読者をやめる 読者になる 読者になる

kivantium活動日記

プログラムを使っていろいろやります

RNNによるツイートの自動生成

授業で「Deep Learningを使って何か作る」という課題を与えられました。チーム開発なのですが、知らないうちにテーマがツイートの自動生成に決まっていたので実装をやりました。発表内容は以下のスライドを見てください。RNNによるツイートの自動生成 / kiva…

AWSのGPUで機械学習した話(Torch編)

TL; DR AWSは初期状態でGPUインスタンスを立てられない設定になっていることがあるから気をつけましょう 学校で「ディープラーニングを使って何かを作れ」という課題が出たのでGenerative Adversarial Text-to-Image Synthesisを動かそうと思ったのですが、…

2016年に読んだ本

2016年最後の日なので今年読んだ本を振り返ってみたいと思います。 まんがタイムKRコミックス 今年もたくさんのきららコミックスを読みました。 NEW GAME! NEW GAME! (4) (まんがタイムKRコミックス)作者: 得能正太郎出版社/メーカー: 芳文社発売日: 2016/07…

アセンブリ言語 その2

この記事はkivantium Advent Calendarの19日目です。前回は最初のCPUの設計に使う命令セットを紹介しました。 今回はこの命令を使っていろいろなプログラムを書いてみます。 SPIM ここではMIPSのシミュレータとして有名なSPIM (MIPSを逆から読んだ名前) を使…

アセンブリ言語 その1

この記事はkivantium Advent Calendarの18日目です。 CPUを設計する際に重要な要素の一つが命令セットアーキテクチャ (ISA) です。 これから設計する簡単なCPUのISAとして、分かりやすく参考文献も多いMIPSを採用することにしました。 MIPS ISA の詳細は htt…

いろいろなCPU

この記事はkivantium Advent Calendarの17日目の記事です。昨日まででCPUを作る部品の解説は一通り終わったのでついにCPUの作成に入る準備ができました。 実際に作成に入る前に過去の偉人に学ぶべく独断と偏見で選んだ歴史上のCPUたちを一言ずつ紹介していき…

浮動小数点数の除算

この記事はkivantium Advent Calendarの16日目です。昨日は浮動小数点数の加減算を扱いました。 今日は演算器シリーズの最終回として浮動小数点数の除算を取り上げます。 基本原理 浮動小数点数の演算を行うには符号部・指数部・仮数部を決める必要がありま…

浮動小数点数の加減算

この記事はkivantium Advent Calendarの15日目です。このページは移動しました。https://kivantium.net/cpu-faddを見てください。

バレルシフタ

この記事はkivantium Advent Calendarの14日目です。昨日は浮動小数点数の乗算をやりました。 今日は浮動小数点数の加減算をするのに必要な部品であるバレルシフタを紹介します。 シフトの使い道 シフト演算は高速なのでビット演算テクニックとしてよく使わ…

きんモザ・ごちうさ聖地巡礼記

この記事はまんがタイムきらら Advent Calendar 2016、きんいろモザイク Advent Calendar 2016、ごちうさ Advent Calendar 2016の14日目です。(さすがに欲張りすぎた)9月にきんいろモザイクの聖地であるイギリスと、ご注文はうさぎですか?の聖地とされる…

浮動小数点数の乗算

この記事はkivantium Advent Calendarの13日目です。昨日は浮動小数点数のフォーマットについて説明しました。 今日は浮動小数点数の乗算をやります。 仕組み 浮動小数点数は仮数と指数で表されるので 指数の和を取る 仮数の積を取る 仮数を丸めてフォーマッ…

浮動小数点数

この記事はkivantium Advent Calendarの12日目です。昨日までで整数の四則演算のやり方を紹介しました。 今日からは浮動小数点数の使い方を紹介します。 IEEE-754 浮動小数点数の表し方はコンピュータの歴史の中で何種類かありましたが、現在主流となってい…

除算器 その2

この記事はkivantium Advent Calendarの11日目です。昨日は回復法を用いた除算器の設計を説明しました。回復法は符号付き整数を扱えないという欠点がありました。今日はこれを克服する非回復法を説明します。 非回復法(引き放し法) 回復法では引き算の結果…

除算器 その1

この記事はkivantium Advent Calendarの10日目です昨日までで四則演算のうち3つが揃ったので今日からは最難関の割り算をやります 回復法(引き戻し法) 話を簡単にするため、まずは符号なし整数の割り算を考えます。 割り算の場合も基本の考え方は筆算です。…

乗算器 その3

この記事はkivantium Advent Calendarの9日目です。昨日はWallaceツリーを用いた乗算器の構成を紹介しました。 昨日までの方法ではbit数と同じ数の部分積の和を取る必要がありましたが、今日は部分積を減らすことで高速化を目指す方法を紹介します。 Radix-4…

乗算器 その2

この記事はkivantium Advent Calendarの8日目です。昨日は符号なし整数掛け算の実現方法として単純な2つの回路を考えてそれらが実用的でないことを確認し、また、符号付き整数の掛け算を行う方法としてBaugh-Wooleyアルゴリズムを紹介しました。 今日は乗算…

乗算器 その1

この記事はkivantium Advent Calendarの7日目です。昨日は乗算器の準備のために順序回路の構成要素であるラッチとフリップフロップについて簡単に触れ、シフトレジスタを導入しました。今日は掛け算を行う回路を作っていこうと思います。 単純な符号なし乗算…

ラッチとフリップフロップ

この記事はkivantium Advent Calendarの6日目です。昨日までは入力だけで出力が確定する組み合わせ回路を扱っていました。 しかし、掛け算のような複雑な演算を効率的に行うには前の計算結果を保存しておいて、何度か繰り返し計算を行うような処理が必要にな…

減算器

この記事はkivantium Advent Calendarの5日目です。昨日までで足し算ができるようになったので今度は引き算を考えます。 引き算はという関係から負の数の足し算として考えれば加算器をそのまま流用することができそうです。 しかし、2進数での負の数をどう定…

加算器 その2

この記事はkivantium Advent Calendarの4日目です。昨日は半加算器・全加算器・リップルキャリーアダーを紹介しました。 リップルキャリーアダーはゲートがたくさん直列に並んでいるため遅いです。 そこで今回は高速な加算器を実装する話です。 キャリールッ…

加算器 その1

この記事はkivantium Advent Calendarの3日目です。昨日はNANDゲートから任意のゲートを作れることを確認しました。 ここからは何回かに分けて四則演算などの基本的な計算を行う回路の実現方法を書いていきます。四則演算は組み合わせ回路として書けるので、…

NANDがあればなんでもできる その2

この記事はkivantium Advent Calendarの2日目です。昨日はトランジスタを使ってNANDゲートを作る方法を解説しました。 今日はNANDゲートを使っていろんなゲートを作っていきます。 基本的なゲート ゲートにはNANDゲートの他にも何種類もあります。よく使う有…

NANDがあればなんでもできる その1

この記事はkivantium Advent Calendarの1日目です。 このAdvent Calendarについて トランプ大統領の誕生により、核戦争で文明が崩壊するリスクが高まっています(脳内設定)。また、巷では空前の異世界転生ブームが巻き起こっているため、いつ異世界に飛ばさ…

はてなブログでKaTeXを使う

はてな記法には数式を表示するためのtex記法が用意されています。 はてなブログでの数式表示はGoogle Charts APIを使っているようでそこそこ遅いです。 はてなブログの数式レンダリングが遅いとTwitterに嘆いていたところ、KaTeXという高速な数式レンダリン…

帰無仮説のもとでp値の分布が一様分布になることの証明

帰無仮説のもとでp値の分布が一様分布になるらしいのですが、納得できるちゃんとした証明が検索しても出てこなかったので書いておきます。p値とは何かとか、帰無仮説とは何かみたいな解説は省略します。 証明 を観測値の帰無仮説の分布、をの累積分布関数 を…

PythonからGNU Socialを使う

先日Twitterに障害が発生した際に「Twitterが落ちてつぶやけない」というつぶやきができなくて非常に苦しい思いをしました。 また、Twitter社の収益が怪しく買収交渉も失敗したという噂も流れています。 なんにせよTwitterがなくてもつぶやきを続行できる代…

Travis CIによるC言語プログラムの自動テスト

自動テストはエンジニアの必須スキル!という話を最近よく聞くのですが、テストをやったことがなかったのでTravis CIで試してみました。 Travis CIとは Travis CIは自動テスト実行サービスで、GitHubと連携してpushした際に自動でテストを行ってくれるところ…

SystemVerilog文法メモ

前回の記事でSystemVerilogをちょこっと書いたので、今度はSystemVerilogの文法について細かく勉強しようと思います。 あくまで自分が勉強するためのメモなので、お気づきの点があったら指摘してもらえると助かります。 理解したところから記述を足していく…

FPGAボードのBasys 3を買った

SystemVerilogの勉強のためにVivadoが使えるFPGAボードが欲しかったので、DigilentのBasys 3を購入しました。ちなみにAcademic料金で購入するとかなり安くなるので、大学等に所属している人はAcademic登録することをおすすめします。 store.digilentinc.comU…

精度保証付き数値計算(その1)

コンピュータ上で実数を表現する際には浮動小数点数を使うのですが、浮動小数点数の計算では誤差が発生します。簡単な例を見てみます。 #include <cstdio> int main(void) { float a = 0.0; for(int i=0; i<10000; ++i) a += 0.01; printf("%.10f\n", a); } という0.</cstdio>…

COBRApyを使ったFlux Balance Analysis

生物の代謝を数学的にシミュレーションする手法の一つにFlux balance analysis(FBA, 日本語だと「代謝流束均衡解析」)というものがあります。一般的な代謝のシミュレーションでは速度定数を実験的に求めてから微分方程式を解く必要があり、実験の手間も計…

最近読んだ本とか

大学の実験で心が折れそうだったので最近かなりのペースでマンガやラノベを読んでいました。というわけでいくつか紹介していきます。 WORLD END ECONOMiCA 「できるかできないかじゃない」「うまくいくまでやるんだよ」冬木糸一さんのレビュー(最高の効率で…

画像処理で大腸菌のコロニー数を数えたかった話

生物の実験でシャーレに生えた大腸菌のコロニーの数を数えるという作業をしたのですが、こんなものは人間の仕事ではないので自動化したいと思いました。 OpenCVのインストール OpenCV 3.0で入った関数を使いたいので記事を書いた時点で最新版のOpenCV 3.1を…

顔認識を失敗させる技術を失敗させるハッカソンに参加した

去年の8月に、国立情報学研究所(NII)が顔認識ができなくなるメガネを開発したという記事が話題になりました。 nlab.itmedia.co.jpそれに対してHaar-like, LBP特徴による方法が前提っぽいから、HOG特徴量で輪郭取るこの前の方法なら勝てそう— 川奈 清 (@kiv…

ボトムアップ型自動微分の実験

Deep Learningの関係で自動微分が脚光を浴びつつあるような気がしますが、自動微分を解説したページは少なくまだまだマイナーな分野だと思います。先日ようやく「アルゴリズムの自動微分と応用」を一通り眺めたのでいろいろ実験して遊んでいます。今日は自動…

全探索によるニューラルネットワーク最適化の実験

先月に[1602.02830] Binarized Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1というニューラルネットワークを二値化して計算する論文が発表されました。(訂正:2つの論文があるように記述していま…

Androidの画面をPCに表示する方法

声優ハッカソンではAndroidアプリを開発してプレゼンを行いました。自分たちのチームはタブレットで実際に動かしたアプリを審査員に見せたのですがタブレットの画面は遠くの人に見せるには小さすぎるのでどうしても分かりにくくなってしまいました。他のチー…

Androidで音声認識を繰り返し実行する

先日声優ハッカソンにActive Geeksとして参加しました。ハッカソンでは声優さんの声を利用して料理のレシピを読み上げるアプリを作ったのですが、単なる読み上げアプリとの差別化のために、手を使わずに操作できる機能を追加しようと考えました。これは濡れ…

FPGAでRS-232C通信を行う

FPGAが流行っているのでちゃんと勉強していこうシリーズです。 RS-232Cとは シリアル通信を行う昔の規格です。送信に1本・受信に1本の信号線しか必要としないので手軽に通信を行えます。最近のパソコンには端子がついていないのでUSBから変換して使うことが…

FPGAでデジタル時計を作った話

学校の課題でFPGAを使ってデジタル時計を作りました。成績が出たので記事にします。機能と動作している様子は以下の動画を見てください www.youtube.com以下ソースコードです。 回路図もコメントも無くて大変不親切なのですが、回路図を起こすのが面倒という…

万有引力の法則と惑星の公転について

生きているうちに一度は納得しておきたい事柄はいろいろありますが、万有引力の法則はその一つでしょう。人類は力学法則を発見することでミサイルを飛ばしたりミサイルを迎撃したりすることができるようになったわけですが、その法則をちゃんと説明できるか…

Chainerの練習

畳み込みニューラルネットワーク(CNN)において、第一層の学習結果はエッジ検出などに用いられるフィルタに近いものになりやすいことが知られています。このことから、層を重ねることによって高次の特徴を抽出することができるようになったことがCNNが成功し…

Chainerで学ぶLSTM

このブログで何回も取り上げているように、ニューラルネットワークを用いた機械学習はかなりの力を発揮します。畳み込みニューラルネットワーク(convolutional neural network, CNN)は画像中で近くにあるピクセル同士の関係に注目するなど画像の特徴をうまく…

Jupyter notebookをセットアップする

ブログに書くほどではない小さな話題についてブラウザ上で気軽にメモを取れる環境を構築したいなと思っていました。欲しい条件としては Markdownなどのマークアップ言語で書ける LaTeXの記法で数式を記述できる ほぼリアルタイムで数式が正しく書けたかチェ…

C89 3日目に行ってきた

C89 3日目に面白そうな同人誌がたくさん売っていたので参戦していろいろ買ってきました。買ったもの・中身の紹介・感想を書いていきます。戦利品 pic.twitter.com/ZM12L4FVmE— 川奈 清 (@kivantium) 2015, 12月 31 SIG2D'15 今回のメインターゲットはこれで…

Faster R-CNNの紹介

はじめに 今までいろんな画像処理のプログラムを書いてきましたが、その多くで物体検出のアルゴリズムを使っています。ご注文は機械学習ですか?・結城友奈はサンタであるなどの記事ではOpenCVでアニメ顔検出をやってみたで紹介したlbpcascade_animefaceを使…

第21羽 対お姉ちゃん用じゃんけん部隊、通称チマメ隊

この記事はごちうさAdvent Calendar 2015の21日目です。 gochiusa.connpass.com はじめに ココア「チノちゃーん!じゃんけんしようよ〜!」 チノ「いまボトルシップを作るのに忙しいので向こう行っててください」 ココア「ヴェアアアア!!」 チノちゃんとじ…

友利奈緒の声を求めて

この記事は友利奈緒Advent Calendar19日目の記事です。 www.adventar.orgちなみに私は友利奈緒判定botを作った方の友利奈緒です。 kivantium.hateblo.jp はじめに ここまでの友利奈緒Advent Calendarにおいて友利奈緒を地上に降臨させるべく様々な試みが行わ…

PowerPCアセンブリでよく使う命令

アセンブリの課題を解くために使った命令のメモ。動かしてみて多分こういう動作だろうという感じで書いているので、詳しくはマニュアル(PDF)や補足資料(PDF)を必ず参照してください。 間違っているかもしれません。間違いに気がついたらTwitterか何かで教え…

PowerPC64のアセンブリ開発環境を整える

PowerPC64のアセンブリを書く課題を手元のx86マシンでテストするための環境構築に関するメモ。 インストール Ubuntu 14.04での開発を前提としています。 sudo apt-get install gcc-powerpc-linux-gnu qemu-userまた、~/.bashrcに export QEMU_LD_PREFIX=/usr…