マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Chainer

【OSS情報アーカイブ】Chainer

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

コンテンツ

「Chainer」とは

「​Chainer」基本情報

■概要

Chainer(チェイナー)とは、日本製の深層学習フレームワークです。ニューラルネットワークをPythonで柔軟に記述し、学習させることができます。

■基本説明

Chainerは、ニューラルネットワークを誤差伝播で学習するライブラリです。「Preffered Networks」が開発しています。

Chainerの特徴として「Flexible(柔軟性)」「Intuitive(直感的)」「Powerful(高機能)」の3つを掲げています。

実行にはCUDAが使われるため、Nvidia製GPUが必要です。

■経緯

2015年6月に公開されました。

■オフィシャルサイト情報

オフィシャルサイト

→​Chainer(Chainer: A flexible framework for neural networks)

ライセンス情報

​Chainerのライセンスは「MIT License」です。

詳細について、こちらを参照ください。
→GitHub →chainer/chainer →LICENSE

ダウンロード

「Ubuntu」「CentOS」「Windows」「OS X」などに対応しています。

→​Chainer →QUICK START

■同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「TensorFlow」「Caffe」「Theano」など。

「​Chainer」の主な特徴

■さまざまなネットワークアーキテクチャをサポート

​Chainerは、「高度で複雑なディープラーニング」だけではなく、「シンプルなネットワーク」にも対応できるライブラリです。

シンプルなネットワークの場合、他のディープラーニングライブラリではオーバースペックすぎて使いづらい面がありますが、​Chainerは柔軟にカバーできます。

対応できるネットワークには以下のようなものがあります。
・畳み込みニューラルネットワーク
・フィードフォワードニューラルネットワーク
・リカレントニューラルネットワーク
・再帰型ニューラルネットワーク など

■Pythonライブラリ

Chainerは、Pythonのライブラリとして提供されています。Python 2.7以上が必要です。

■シンプルで直観的なPython記法

Chainerはネットワーク構成をPython記法で直観的に記述できます。

制御構造は、すべてPythonで記述できます。Pythonのコードを用いて、入力配列に何の処理が適用されたのかのみを記憶しておき、それを誤差逆伝播の実行に使います。

2つの抽象的基本要素(データ「Variable」と関数「Function」)を定義します。「Variable」と「Function」間の計算/条件分岐としてPythonの制御構文をそのまま使用できます。新たな構文などを覚える必要がないため、プログラマはネットワーク構成を直感的に記述できます。設定ファイル/固定データセットは必要ありません。

「各層をつなぐネットワーク関数」「活性化関数」「誤差関数」などの関数がデフォルトで用意されています。

「CUDA計算」「複数GPU対応」などの処理はわずかなコードで実装できます。Caffeで2000行以上のコードを、​Chainerでは200行未満で実装できた例もあります。

■「Define-by-Run」方式

​Chainerは「ネットワーク構築」と「学習」を同時に行う方式です。処理フェーズとして「Define」と「Run」に分かれていません。

本来なら別に分けることが難しい計算グラフの生成/学習を同時に記述できます。

Forward計算時に、入力から出力に到達するまでの経路を記録することにより、初めて暗黙的に計算グラフが得られます。

■Flexibility(柔軟性)

畳み込み/リカレントなど、さまざまなタイプのニューラルネットワークをシンプルに実装できる柔軟性があります。

本来切り分けることが難しい計算グラフの生成/学習を同時に記述できます。このことにより、幅広い種類のニューラルネットワークに柔軟に対応できます。

■Intuitive(直感的)

Chainerは、データを表す「Variable」と関数を表す「Function」という二つの抽象的な基本要素だけを定義します。それらの間の計算/条件分岐はPython制御構文をそのまま使用できるため、プログラマにとって、ネットワーク構成を動的/直感的に記述できます。複数GPUを使用する場合も直感的な記述が可能です。設定ファイル/固定データセットは必要ありません。

記法が直観的かつシンプルであるため、「単純なネットワーク領域」から「複雑なディープラーニング領域」まで幅広くカバーできます。

同様なフレームワークである「Caffe」において2000行程度のコードを、「​Chainer」では200行未満で表現できたという話もあります。

■Powerful(高性能)

並列コンピューティングアーキテクチャ「CUDA」をサポートし、GPUを利用した高速な計算が可能です。

GPUを利用した高速な計算が可能で、事前にコンパイルを行う「Caffe」や「Theano」ベースのライブラリとほぼ互角の性能が得られるとされています。

多くの手間をかけずに複数GPU動作に対応できます。

■インストールが容易

一般的に、ディープラーニングフレームワークは、多くのツール/ライブラリのインストールが必要であるため、インストールには手間がかかります。しかし、​Chainerは依存ライブラリが少ないため、インストール負荷は少なめです。

公式Dockerイメージが用意されているので、それを利用すれば、即座にインストールできます。

また、「pip install chainer」コマンド実行のみでインストールできます。

​Chainer参考情報① Chainerのインストール

ディープラーニングライブラリ「​Chainer」を各環境へインストールする方法を紹介します。

■Chainerインストール—Linux(Ubuntu)編

概要

​ChainerをUbuntuへインストールする手順を解説しています。直接「CUDA Toolkit」をインストールします。

導入環境

・OS=Ubuntu16.04(64bit)
・GPU=GeForce 940M

解説テーマ

1. ドライバをインストールする
2. CUDA toolkitをインストールする
3. cuDNNをインストールする
4. Chainerをインストールする
5. 動作チェック
6. カーネルのアップデートについて

ページリンク

→Qiita『Ubuntu16.04にCUDA8.0とChainerをインストールする』

■Chainerインストール—Windows編

概要

​ChainerをWin10へインストールする手順を解説しています。Anacondaを利用しています。

導入環境

・OS=Windows10(64bit)
・​Chainer=Chainer1.8.1

解説テーマ

1.Python3.5.1のインストール
2.VisualStudio 2013 Community をインストール
3.CUDA 7.5をインストール
4.cuDNNをインストール
5.Pycudaをインストール
6.Windows環境変数を追加
7.Chainerのインストール(DOS上)
8.Chainerのサンプルファイルを実行

ページリンク

→Qiita『Windows環境でChainerのGPUを使えるようにするまで』

■Chainerインストール—Mac編

概要

ChainerをMacへインストールする手順を解説しています。Anacondaを利用しています。

「Numpy」「Six」「filelock」などの用語説明もあります。

導入環境

・OS=MacOS Sierra (バージョン 10.12.2)
・​Chainer=Chainer1.8.1

解説テーマ

・インストール時の注意点
・Chainerのインストール

ページリンク

→Qiita『MacでのChainerインストールに必要なものの説明とまとめ』

■Chainerインストール—nvidia-docker編

概要

Dockerコンテナイメージ管理ツール「nvidia-docker」を使用してChainerコンテナを作成後に使用する方法を解説しています。

「nvidia-docker」について分かりやすく解説されています。

導入環境

・OS=ubuntu 16.04 LTS

解説テーマ

・nvidia-dockerとは?
・結局nvidia-dockerは何がおいしいの?
・導入環境
・導入
・docker engineのインストール
・nvidia-dockerのインストール
・使い方
・tensorflow v0.9のコンテナを作り、使ってみる
・chainer v1.10のコンテナを作り、使ってみる

ページリンク

→ADWASY ENGINEER BLOG『nvidia-docker』

■​Chainerインストール—クラウド(AWS)編

概要

AWS環境に​Chainerをインストールする方法です。

条件が整っている環境の場合、コマンド2つでインストールが完了します。

導入環境

・AWS環境=Bitfusion Boost Ubuntu 14 Torch 7

ページリンク

→Qiita『AWSでChainer動かすならcuDNNが最初から入っている環境が楽。』

​Chainer参考情報② Chainerのチュートリアル

​Chainer参考情報② Chainerのチュートリアル

ディープラーニングライブラリ「​Chainer」のチュートリアルについて紹介します。チュートリアルを通じて、基本的な操作方法や仕組みを確認できます。

■「Chainerチュートリアル」の和訳

概要

「Chainerチュートリアル」(公式英語版)を和訳されています。

​Chainerで使われる各用語について、コードをまじえて、どのようなものなのか確認できます。

解説テーマ

・Introduction to Chainer
・Core Concept
・Forward/Backward Computation
・Links
・Write a model as a chain
・Optimizer
・Trainer
・Serializer
・Example: Multi-layer Perceptron on MNIST
・Example: Multi-layer Perceptron on MNIST (バージョン1.11以前)

ページリンク

→俺とプログラミング『Chainerチュートリアル の和訳【Chainerの紹介と多層パーセプトロン】』

■「ニューラルネットワークの仕組み」と​Chainer実装

概要

​Chainerでのディープラーニングに必要な知識となる「ニューラルネットワークの仕組み」についての解説です。

イラスト付きで、「ニューラルネットワークの仕組み」「伝播の仕組み」「学習の仕組み」「誤差逆伝播法の仕組み」などについて確認できます。

解説テーマ

・ニューラルネットワークの仕組み
・Chainerによる実装

ページリンク

→Qiita『Chainerで始めるニューラルネットワーク』

■10時間でChainerの基本を身につける(基本を抑えている方向け)

概要

機械学習などに関する知識がある程度ある方向けの解説です。

「​Chainerについて薄く広く確認しながら、​Chainerを理解していく」という内容になっています。

解説テーマ

・大前提
・ゴール
・最初の最初
・実装を試す(2時間)
・実際にchainerを試す(4時間)
・動いたら
・今後

ページリンク

→あれもPython,これもPython『【ディープラーニング】10時間でChainerの基本を身につける』

■チュートリアル「MNIST」

概要

Chainerオフィシャルサイトのチュートリアル「MNIST」を動かす手順について解説しています。

「0から9までの手書き数字の画像を学習して数字を認識する」という基本的なチュートリアルを試しています。

定義方法やコードも掲載されていて、参考にできます。

ページリンク

→毎日の向こうに『Chainer: 例題 MNIST の学習』

■公式日本語チュートリアル「Chainer Playground」

概要

​Chainerを開発しているPreferred Networks社が公式コンテンツとして「Chainer Playground」を公開しています。

「ブラウザ上で深層学習の理論をChainerを使いながら学ぶウェブサービス」として公開されており、「ディープラーニングの基礎知識」「Chainerを使ったディープラーニングの開発」「画像認識、音声認識、強化学習のアプリケーションの開発」などについて、チュートリアル形式で学ぶことができます。

サンプルコードを入力して実行させることもできます。

この「Chainer Playground」について「やってみたレポート」になっています。

解説テーマ

・軽く触ってみたので御紹介
・いまのところ3章の途中まで記述されているようです
・実際にpythonのコードを実行してみました
・pythonのコードを書き換えてみた
・エラーも出してみた
・本編に突入します
・課題もあります
・お馴染みNumpyやCupyも軽く解説されています
・みんな大好きMNIST
・第2章は具体的にChainerに触ります
・Chainer版MNIST
・第3章ではCNNについても学べるようです

ページリンク

→Qiita『WebでChainerを「触って」学習出来る Chainer Playground をやってみた』

​Chainer参考情報③ ChainerでのPythonプログラミング

​Chainer参考情報③ ChainerでのPythonプログラミング

ディープラーニングライブラリ「​Chainer」でのPythonプログラム事例を紹介します。「画風変換」「化物語キャラ分類」「将棋」「三目並べ」などを紹介しています。

■画像分類—ウサギ特化型

概要

Chainerでウサギ分類を行っています。

「ネザーランドドワーフ」「アンゴラ」「ロップイヤー」「ライオンラビット」の4種類のウサギの判別を目指します。

解説テーマ

・利用した画像データについて
・画像50×50のリサイズ用コード(changeImage_tech_blog_sample.py)
・学習とテスト(train_tech_blog_sample.py)
・実行結果

ページリンク

→キャスレー技術ブログ『DeepLearning用フレームワーク Chainer を試してみた_その2』

■画像分類—「化物語」シリーズキャラクター特化型

概要

​Chainerで、アニメ作品「化物語」シリーズに登場するキャラクターを分類するボリューム企画です。

全Part7のうちPart6まで進んでいるようです。

解説テーマ

準備編
・part0 前書き
・part1 画像の収集
・part2 画像の縮小&水増し
2値分類編
・part3 暦orNOT暦で2値分類(モデル作成&学習編)
・part4 暦orNOT暦で2値分類(未知データに適用するよ編)
主要キャラ分類編
・part5 主要キャラで分類問題(未知データに適用するよ編)
・part5.5 主要キャラで分類問題(改良編)
・part6 主要キャラで分類問題(GPU使ったよ編)
・part7 新規データをFasterRCNNを使って分類させる(むしろ全てはこれのため)

ページリンク

→MATHGRAM『python: chainerを使って化物語キャラを認識させるよ! 〜part0 前書き〜』

■画風変換アルゴリズム

概要

Chainer開発元Preferred Networks社の技術ブログで、「画風変換アルゴリズム​Chainer実装」が紹介されています。

「コンテンツ画像」を「スタイル画像」風に変換した画像を生成します。

アルゴリズムの処理内容について解説もあり、どのような処理が行われているのか参考になります。

解説テーマ

・概要
・アルゴリズムの解説
・モデル
・CNNの中間層
・スタイル行列
・目的関数
・画像の更新則
・結果の分析
・おわりに

ページリンク

→Preferred Research『画風を変換するアルゴリズム』

■将棋

概要

​Chainerを利用して開発した将棋アルゴリズムについて解説しています。

解説テーマ

・原理
・python-shogi
・気になるとこ
・まとめ

ページリンク

→グニャラくんの株式会社wktk運営日記『Deep Learningを用いた将棋プログラムGunyanzaを公開しました』

■三目並べ

概要

Chainerで作成された「三目並べ」アルゴリズムについて解説されています。

「モンテカルロ」「Q-Learning」「Deep Q Network(DQN)」と戦わせます。

解説テーマ

・三目並べの設計
・盤面
・ゲームの進行役
・色々なプレイヤーを作成
・ランダム君
・人間
・改良ランダム君 (Alpha Random)
・モンテカルロ
・Q-Learning
・DQN (Deep Q Network)
・結論

ページリンク

→Qiita『ChainerでDQN。強化学習を三目並べでいろいろ試してみた。(Deep Q Network、Q-Learning、モンテカルロ)』

​Chainer参考情報④ Chainerのファインチューニング

​Chainer参考情報④ Chainerのファインチューニング

ディープラーニングライブラリ「​Chainer」の精度を向上させるための「ファインチューニング」について紹介します。

Caffe用学習済モデルを使用すると、効率的にファインチューニングできます。

■Chainerでのファインチューニング個人的ベストプラクティス

概要

Caffeの「Model Zoo」で公開されている学習済モデルを​Chainer用に変換後、パラメータ設定を行い、ファインチューニングを行なう方法を解説しています。

解説テーマ

・ファインチューニング
・CaffeモデルのChainerモデルへの変換
→1. Caffeモデルを読み込む
→2. Chainerのモデルとして保存
・新しいモデルにパラメータをコピー
・まとめ

ページリンク

→Qiita『Chainerでファインチューニングするときの個人的ベストプラクティス』

■学習済モデル変換ありなしの処理時間の差

概要

「Caffe用学習済モデルを​Chainerに読み込む時間がかかりすぎる問題」について紹介しています。

CaffeモデルからChainerモデルに変換するスクリプトを実行することで、「30秒以上かかっていたのが1秒以下」に短縮できる記録です。

モデル変換によって処理時間を大幅に減らせることが分かります。

解説テーマ

・Chainerのcaffeモデルの読み込みが遅い
・時間計測
・Mac Book Pro
・Raspberry Pi
・まとめ

ページリンク

→karaage『Chainerのcaffeモデルの読み込みを爆速にした』

■Chainerのファインチューニング詳細解説

概要

​Chainerのファインチューニングについての解説です。

手順のみではなく「学習済データの準備方法」「モデルの理解」「データ前処理」など、ファインチューニングを行なう場合の前提知識についてイラスト付きで詳細に解説されています。

データセット「ImageNet」を使用しています。「ImageNet」は、ILSVRC(ImageNet Large Scale Visual Recognition Challenge)で使用されている画像に対してタグ付けを行っているデータセットです。

「ImageNet」からのダウンロードの際に、リンク切れを回避しながら並列処理でダウンロードできるPythonスクリプトを提供されています。

解説テーマ

・データの準備
・ImageNet
・モデルの理解
・データの前処理
・教師データの準備
・モデルの学習
・パフォーマンス
・監視

ページリンク

→Qiita『Convolutional Neural Networkを実装する』

■「Slack」用bot作成—Chainer + Slack + Twitter連携

概要

「​Chainer」でビジネス向けチャット「Slack」用botを作成して、「Twitter」から学習データを取得し、ファインチューニングする方法についての解説です。

解説テーマ

・ChainerでSlack用のbot作成!!
・対象読者
・全体構成
・Chainerによる対話モデルの学習
・Slackによるbotの応答
・Slackの連携に必要な情報の取得
・機能概要
・Twitter
・総括

ページリンク

→Qiita『Chainerで学習した対話用のボットをSlackで使用+Twitterから学習データを取得してファインチューニング』

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【トレンド解説】超入門「 スマートファクトリー 」🏭

トレンド解説

2024.04.15

【トレンド解説】超入門「 スマートファクトリー 」🏭

「 スマートファクトリー 」への理解を深めるための解説として、初心者向けにわかりやすくまとめた記事です。「新しい工場の概念」「デジタルツインの活用」「IoT技術による最適化」など、現代の製造業に必要な知識を効果的に学べます。 スマートファクトリー の導入によるメリットを具体的に解説しています。

【IT用語解説】「 デジタルヒューマン 」とは😊

IT用語解説

2024.01.26

【IT用語解説】「 デジタルヒューマン 」とは😊

【IT用語解説】「 デジタルヒューマン 」として、「デジタルヒューマンとは何か?」「どのようにして作成できるのか?」「私たちの世界にどのような影響を与えているのか?」などについて、まとめています。