[読書メモ] ゼロから作るDeep Learning: 第2章

O'Reilly Japan - ゼロから作るDeep Learning

# パーセプトロン

  • x(入力)w(重み)を乗じて加算したものがθ(閾値)を超えると発火、y(出力)が1になるというアルゴリズム。
    • 名前は難しそうだけど単純。
  • 図で入力や出力を表す◯をニューロンやノードと呼ぶ。
  • 重みは電流の抵抗のような役割を果たす。(信号の流れやすさを制御するパラメータ)
  • この単純な同じ構造のパーセプトロンで、AND、NAND、OR回路が作れる。(ここではパラメータ決めを手動でやるが、本当は機械にやらせたい)
  • θ-b(バイアス)としてb + w1x1 + w2x2が0を超えるか、という式に変換する。重みは各信号の重要度、バイアスは発火しやすさ。
  • パーセプトロンは線形なので、非線形であるXORは表現できない。
  • 多層(2層)ならXORを作れる。
  • O'Reilly Japan - コンピュータシステムの理論と実装 NANDだけでコンピュータを作れることを解説してくれる本。

[読書メモ] ゼロから作るDeep Learning: 第1章

O'Reilly Japan - ゼロから作るDeep Learning

  • 使うのはPython 3系
  • Anacondaというディストリビューションを使ってインストールするのが楽
  • :忘れない!
  • NumPyのarray
    • element-wise(要素数が同じ)な計算
    • ブロードキャストによるスカラ値や形状の異なる配列との演算
    • 1次元はベクトル、2次元は行列、一般化したものがテンソル(この本では3次元以上をテンソルと呼ぶ)
    • X[X > 15]という書き方おもしろい
  • Matplotlib便利

[読書メモ] ゼロから作るDeep Learning: まえがき

新しいアプリを作ろうと思ってたんだけど、なかなか決まらないので積読状態だった O'Reilly Japan - ゼロから作るDeep Learning 読み始めることにした。

今まえがきを読んだところ。良いこと言ってる。

  • 聞いたことは忘れ、見たことは覚え、行ったことは理解できる
  • 頭を抱えて立ち止まり、時間をかけることは理解のためには大切

次のアプリは承認欲求的にそれなりにダウンロードされたいな、と思っていたんだけど、自分が苦手な分野であるこれ系をちゃんとやりとげることも自己承認的にとても良さそうなので頑張ってみることにする。

しかし、翻訳とばかり思ってたこの本、国産だったか…!

Failed to load resource: Cannot make any requests from null

iOS 9のWebViewでCORSなリクエストを飛ばそうとするとこのエラーが出る?
ちゃんと調べてないけどiOS 10なら出ないのでおそらくそういうことらしい。

SwiftのKeychainAccessで保存した値をReactNativeで取得する

Swift製のアプリをRN化するにあたり、Swiftで

let keychain = Keychain(service: BUNDLE_IDENTIFIER)
keychain["token"] = token

したものをReactNativeで取りたかった。

最初に試したのは、oblador/react-native-keychain: Keychain Access for React Native

import * as Keychain from 'react-native-keychain'
Keychain
  .getGenericPassword()
  .then(credentials => {
    console.log(credentials)
  })
=> { service: BUNDLE_IDENTIFIER, username: {}, password: '2' }

passwordのところに取りたい文字列の最初の1文字だけが入ってくるというよくわからない状態になった。
Obj-cの中身を直す元気はなかったので別ライブラリを検討することに。

お次はclassapp/react-native-sensitive-info: Android Shared Preferences and iOS Keychain for React Native

import SInfo from 'react-native-sensitive-info';
SInfo.getItem('token', {
  sharedPreferencesName: BUNDLE_IDENTIFIER,
  keychainService: BUNDLE_IDENTIFIER
}).then(token => {
    console.log(token)
})

であっさり取れた。
もっと長々とハマるかと思っていたので助かった。