ブックマーク / qiita.com/yuky_az (12)

  • 320ページ、30万字、図165枚の技術書「はじめてのディープラーニング」をどのように執筆したのか? - Qiita

    こんにちは、@yuky_azです。 2018年8月28日に著書「はじめてのディープラーニング -Pythonで学ぶニューラルネットワークとバックプロパゲーション- 」がSBクリエイティブより発売されました。 TensorFlowやChainerなどのフレームワークを使わずにPythonでディープラーニングを構築する、ディープラーニング初学者向けのです。Python数学の基礎から、丁寧に解説しています。 320ページ、文字だけで30万字、図は165枚に及びます。ご察しの通り、執筆には大変な労力を伴いました。 今回は、出版までに至る経緯と得られた知見をシェアしたいと思います。 技術の執筆を考えている方、現在執筆中の方に何らかの形でお役に立てば嬉しく思います。 執筆のきっかけ 執筆のきっかけになったのは以下の2つです。 * UdemyAI関連コース * iOSDC2017での登壇 これら

    320ページ、30万字、図165枚の技術書「はじめてのディープラーニング」をどのように執筆したのか? - Qiita
    azyukky
    azyukky 2018/09/11
    「はじめてのディープラーニング」執筆の裏話です。
  • iOSと人工知能(AI) -GPU並列演算の仕組みと機械学習- というタイトルで、iOSDC2017に登壇しました - Qiita

    iOSと人工知能(AI) -GPU並列演算の仕組みと機械学習- というタイトルで、iOSDC2017に登壇しましたXcodeiOSMetal人工知能Swift iOSDC2017に以下のタイトルで登壇しました。 iOSと人工知能(AI) -GPU並列演算の仕組みと機械学習- スライドはこちらです。 (Speaker Deck) iOSと人工知能(AI) -GPU並列演算の仕組みと機械学習- 発表の動画はこちらです。 (YouTube) iOSDC Japan 2017 09/17 Track C 15:10 / iOSと人工知能(AI) -GPU並列演算の仕組みと機械学習- / Yukinaga Azuma(我幸長) 内容は4章仕立てで、人工知能概要の解説から、AppleのMetalテクノロジーによるGPUを用いた独自AIの実装までお話ししました。 以下は発表原稿の全文になります。スライ

    iOSと人工知能(AI) -GPU並列演算の仕組みと機械学習- というタイトルで、iOSDC2017に登壇しました - Qiita
    azyukky
    azyukky 2017/09/22
  • MetalでiOSアプリに宿る生命 - Qiita

    この内容は、2016年12月14日にshibuya.swift#6で発表した内容に加筆を行ったものです。加筆内容は、主にGPUコンピューティング、生命や知性に関する個人的な観点です。 発表時のスライドはこちら。 MetalでiOSアプリに宿る生命 MetalテクノロジーはiOS8から使用可能なったオーバーヘッドの小さいローレベルな コンピュータグラフィックスAPIです。 グラフィック用のOpenGLと並列計算用のOpenCLに似た機能が一つのAPIに統合されています。 今回取り扱う内容は、このうち主に並列演算の方です。 CPUではせいぜい数コアしかありませんが、GPUには数千以上のコアがあり並列演算を得意としています。 シーケンシャルな演算が得意なCPU、並列演算が得意なGPU、両者をうまく組み合わせることにより今までになかった高い演算能力を備えたアプリができる可能性があります。 Meta

    MetalでiOSアプリに宿る生命 - Qiita
    azyukky
    azyukky 2016/12/25
  • [iOS] MetalでGPUコンピューティング (2) 群知能 - Qiita

    前回はMetalによるGPUコンピューティング(GPGPU)の基礎と特性を扱いましたが、今回はその応用を扱います。アプリの描画部分にMetalを用いるのではなく、ロジック部分にMetalを用いるという通常と逆の試みを行います。 今回は、Metalを用いて群知能を実装します。 各個体はローカルに互いと、そして彼らの環境と対話する。個々のエージェントがどう行動すべきかを命じている集中的な制御構造は通常存在しないが、そのようなエージェント間の局所相互作用はしばしば全体の行動の創発(emergence)をもたらす。このようなシステムの自然界の例として、アリの巣、鳥の群れ、動物の群れ、細菌のコロニー、魚の群れなどがある。 -群知能- Wikipedia コンピュータ上の群知能として有名なものに、クレイグ・レイノルズによって考案されたBoidsがあります。 Boidsは複雑系や自己組織化に深く関わって

    [iOS] MetalでGPUコンピューティング (2) 群知能 - Qiita
    azyukky
    azyukky 2016/11/11
  • [iOS] MetalでGPUコンピューティング (1) 最小限のコードの記述と特性の把握 - Qiita

    Metalは、iOS8で導入された画像処理や並列演算などを効率的に行うためのフレームワークです。記事では、そのうち画像処理の方ではなくCPU/GPUの連携による並列演算の方を扱います。 GPUコンピューティング(GPGPU)は、一般に機械学習やリアルタイム画像解析、オーディオなどパフォーマンスがクリティカルであり、なおかつ並列演算が有効である場面で多く使われてきましたが、Metalの登場によりiOSでも手軽にGPUコンピューティングが扱えるようになりました。 今後どんなアプリに応用できるのかとてもワクワクしているのですが、Metalを用いた開発は少々敷居が高く、また通常のCPUによるシーケンシャルな演算とは特性が異なります。 Metalをもっと身近なものにするために、今回はまず可能な限り簡単な実装を用いてMetalによるGPU演算を行い、その後CPUによる演算とパフォーマンスと特性の比較

    [iOS] MetalでGPUコンピューティング (1) 最小限のコードの記述と特性の把握 - Qiita
    azyukky
    azyukky 2016/10/12
  • WebView+Canvas vs ネイティブ パフォーマンス比較 iOS編 - Qiita

    WebView+Canvas+JavaScriptとネイティブのパフォーマンスを比較するために、実験を行ってみました。 非常に大雑把な比較になりますので、その点はご容赦ください。 検証方法 →色のついた正方形を複数画面内でランダムな方向に移動させる。WebViewとネイティブでそれぞれ正方形の数を変化させて、パフォーマンスの推移を測定する。 検証環境 →Xcode7.2.1 iPhone6 Plus iOS9.2.1 WebView+Canvas+JavaScript側の実装 →CanvasとJavaScriptのロジックを含むindex.htmlをバンドルし、UIWebViewで表示させる。20ミリ秒間隔で、fillRect関数を用いて複数の正方形を描画する。WKWebViewは原因不明の理由によりロジックがうまく動作せず、またパフォーマンスが表示されないため用いない。 ネイティブ側の実

    WebView+Canvas vs ネイティブ パフォーマンス比較 iOS編 - Qiita
    azyukky
    azyukky 2016/02/29
  • UIViewに生命を与えてみる - Qiita

    アプリ画面上のViewに生命があったら面白いだろうなとふと思いつき、UIViewに生命らしさを実装してみました。 (そもそもコンピュータ上のプログラムを生命と呼んでいいかどうかには異論があるかと思いますが) 生命の定義は生物学者によってもまちまちなのですが、今回は以下のように生命を定義してみました。 a. 自己複製ができる b. 外部と代謝(物質のやりとり)ができる c. 遺伝子が存在し、遺伝子が一定以上異なる個体は別種とみなされる 複雑な生命を実装するのは難しいので、今回はバクテリアやアメーバなどの無性の単細胞生物をイメージして、上記を以下のような方法でViewに実装してみました。 1. 個体がある一定以上の大きさになると分裂する。 2. 分裂の際に、個体の遺伝子が複製される。その際わずかな遺伝子の変異がランダムに起きる。 3. 遺伝子には、個体の動くスピード、個体の大きさ、個体の肉

    UIViewに生命を与えてみる - Qiita
    azyukky
    azyukky 2016/02/22
  • ParseのCloud Codeを使ってサーバーサイドのコードを記述し、ランダムなオブジェクトを取得する方法 - Qiita

    ParseのCloud Codeを使ってサーバーサイドのコードを記述し、ランダムなオブジェクトを取得する方法JavaScriptXcodeiOSParsecloudcode Parseというサービスを用いると、クラウド上のデータベース機能が簡単に利用できます。 さらに、Cloud Codeを使えばJavaScriptでサーバーサイドの処理を記述することも可能です。 とても便利なParseですが、現在、残念ながらParseにはデータベース上からランダムなオブジェクトを返すAPIが無いようです。 そこで、Cloud Codeを用いてデータベース上のランダムなオブジェクトを取得する方法を実装してみましたので、その手順およびコードを解説してみたいと思います。 ランダムな相手とネットワーク対戦するゲームなどに応用可能かと思います。 Cloud Codeを使わずに、端末からデータベースの行の数をカウン

    ParseのCloud Codeを使ってサーバーサイドのコードを記述し、ランダムなオブジェクトを取得する方法 - Qiita
    azyukky
    azyukky 2015/02/20
  • ボールを衝突させてUIKitとSpriteKitのパフォーマンスを比較してみる - Qiita

    iOSでゲーム開発をするために、SpriteKitがあります。 でも、UIKit用いてゲーム開発ができないことはありません。 ただ、UIKitゲーム専用ではないので、SpriteKitに対して処理速度が遅い、また物理演算を記述するのが大変というイメージがあります。 記事では、SpriteKitUIKitそれぞれを用いて同じ動作をするコードを記述し、両者を比較してみたいと思います。 今回は、画面中央から無数のボールを発生させ、お互いに、衝突させるコードを、それぞれSpriteKitUIKitで記述してみたいと思います。 まず、SpriteKitの方から。 #import "GameScene.h" @interface GameScene () <SKPhysicsContactDelegate> { int count; } @end @implementation GameSce

    ボールを衝突させてUIKitとSpriteKitのパフォーマンスを比較してみる - Qiita
    azyukky
    azyukky 2015/01/06
  • 意外にパワフル!?NSUserDefaultsの書き込み、読み込み速度について - Qiita

    NSUserDefaultsはデータの永続化にとても便利なクラスですが、大量のデータを扱う際はCoreDataなどデータベースに基づくクラスを使った方メモリ的の使用量が押さえられ、検索速度的にも有利です。 では、どの程度までのサイズのデータでしたらNSUserDefaultsで無理無く扱うことができるのでしょうか。 この疑問を自分なりに解決するために、以下のコードを書いてみました。 - (void)viewDidLoad { [super viewDidLoad]; mArray = [NSMutableArray new]; NSArray *array = @[@"赤", @"青", @"緑", @"黄", @"白"]; int repeatNumber = 10000; for (int i = 0; i<repeatNumber; i++) { NSMutableString *s

    意外にパワフル!?NSUserDefaultsの書き込み、読み込み速度について - Qiita
    azyukky
    azyukky 2014/02/15
  • iOSのシングルトンの話 - Qiita

    皆さんiOSでシングルトンは使っていますか? シングルトンはいわゆるデザインパターンと呼ばれるもので、複数のクラス間の変数、オブジェクト、メソッドのやりとりを劇的に簡単にすることが可能です。 このように便利ですが今ひとつとっつきずらいiOSのシングルトンについてこの記事では少々解説したいと思います。 シングルトンを使用したクラスには、例えば以下のメリットが有ります。 ・複数のクラス間での変数やオブジェクトの共有が簡単にできる。 ・複数のクラス間でメソッドの共有ができる。 ・ViewControllerの機能を分担させることができる。 一方で、以下のようなデメリットも有ります。 ・不要になっても自動的に解放されない。 ・何度もインスタンス化することができない。 必要に応じて、通常のクラスとシングルトンを適用したクラスを使い分けるといいと思います。 シングルトンですが、シングルスレッドの場合は

    iOSのシングルトンの話 - Qiita
    azyukky
    azyukky 2014/02/08
  • Objective-Cでは、インスタンス変数をどこに宣言するのが正しいのか? - Qiita

    では、どこで宣言するのがベストなのでしょうか? こちらのAppleの公式ドキュメントを参考にすると、 https://developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf 38ページの先頭に以下の記述があります。 インスタンス変数は実装詳細であり、通常、クラス自身の外からアクセスされることはあり ません。さらに、実装ブロック内に宣言すること、あるいは宣言済みプロパティから自動生 成させることも可能です。したがって通常は、インスタンス変数宣言をパブリックインター フェイスで行うべきではないので、波括弧も省略してください。 このように、Apple側はCase1のようにヘッダーファイル内でメンバ変数の宣言することを推奨していないようです。 また、このドキュメントでは、Case3のようにimplementationの

    Objective-Cでは、インスタンス変数をどこに宣言するのが正しいのか? - Qiita
    azyukky
    azyukky 2014/02/08
  • 1