「ゼロから作る Deep Learning」 の numerical_gradient メソッドの名前空間についてのメモ
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (8件) を見る
こちらの本のp 114で
... from common.gradient import numerical_gradient class TwoLayerNet: ... def numerical_gradient(self, x, t): ... grads['W1'] = numerical_gradient(loss_W, self.params['W1'])
とあって、再帰呼び出しになって止まらないか…と思ったのですが止まりませんでした。
気になったのでテストして見ます。
test_module.py
def test_function(a,b): return a + b
test.py
from test_module import test_function class TestClass(object): def test_function(a,b): c = test_function(a,b) * 4 # ここで呼ばれるのはimportした方のtest_function return c print(test_function(2,3)) # => 5 print(TestClass.test_function(2,3)) # => 20
こんな感じの結果になりました。TestClass.test_functionと5行目の呼び出し部を書き換えると再帰呼び出しになります。 classでモジュールを切っているので、名前空間がそうなる理由なのかと思いますが、また時間見つけてドキュメント調査します。
__call__メソッド
class test(object): def __call__(self, x, y): return x*y a = test() a(1,2) # => 2
みたいにすることで関数みたいにオブジェクトを呼べる。
「Javascript 本格入門 8-1 Ajaxとは」 サーバーサイドを Python CGI で
JavaScript本格入門 ?モダンスタイルによる基礎からAjax・jQueryまで
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/27
- メディア: 大型本
- 購入: 29人 クリック: 673回
- この商品を含むブログ (53件) を見る
すっかり放っていたJavaScriptの勉強を再開、この本読んでたのですが
(9月末に改訂版出てたんですね、いい本ですが使えないAPIあったりなど古くなってた点が改良された…のでしょう)
Ajax の解説の章でphpを使うところがあって、この上phpも…と気後れしたのでPythonでさっくり書いてみました。
root/ ├ helloAjax.html ├ helloAjax.html └ cgi-bin/ └ helloAjax.py
と置いて、
python -m http.server --cgi
と走らせれば起動します。 どちらかいうと前段のAjaxを使用しないほう(hello.html, hello.py)を書くのが骨折れました、というかこんな書き方でいいのだろうかという。
改訂版も買いますか…
Vagrant で Ubuntu 16.04 LTS
VirtualBox とVagrantをダウンロード、インストール(Virtual Box のバージョンに注意 ) した後に、適当なディレクトリに入って
vagrant init ubuntu-16.04 https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-vagrant.box
するとVagrantファイルが作成されます。 中を覗くと
# config.vm.network "private_network", ip: "192.168.33.10"
とあるのでコメントアウト消去しホストからのアクセスIP指定。
45 # config.vm.provider "virtualbox" do |vb| 46 # # Display the VirtualBox GUI when booting the machine 47 # vb.gui = true 48 # 49 # # Customize the amount of memory on the VM: 50 # vb.memory = "1024" 51 # end
とあるので行頭のコメントアウト外して、立ち上げた時にGUIも起動、適当なメモリサイズもここで指定しておきます。
この50-51 行目の間に下の設定を入れる。
52 # Ajust Vagrant clock with Host one: 53 vb.customize ["setextradata", :id, "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled", 0]
前にCentOSでVagrantいじっていた時に時刻がホストとずれてdockerを走らせられなかったので、時刻同期の設定を(念のため)入れておきました。
あとは
vagrant up
で自動的にイメージのダウンロードから開始されます。
しばらくするとログイン画面が別ウィンドウで立ち上がりますが、現段階ではまだパスワードがセットされていないのでログインできません。 ホストから
vagrant ssh
で、入ることができるようになります。 続きはまたこんど。
narray の要素同士の比較について
if文の条件式の中でnumpy のアレイ同士の比較をしたところ
The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
と言われました。
import numpy as np a = np.array([1,2]) b = np.array([1,3]) if a == b: pass
としすると発生しました。 アレイ同士を比較すると
a == b
# array([ True, False], dtype=bool)
と要素間の比較になるため(最初の要素が1同士なのでTrue, 2番目の要素が2と3だからFalse)、真偽値が曖昧だからダメ、と怒られたようです。 これを真偽を返すようにするためには
np.all(a == b) # False np.any(a == b) # True
とすればいいようです。 all()は全件一致時のみTrue, any()は1件でも一致があればTrueを返す、とのこと。
Flotr2 で棒グラフの色が同じになってしまう - JavaScriptによるデータビジュアライゼーション入門 -
- 作者: Stephen A. Thomas,古籏一浩,木下哲也
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/10/21
- メディア: 大型本
- この商品を含むブログを見る
を読み進めています。 人に何かを伝えようと思った時JavaScriptからは逃れられないな・・・と思った次第です(jQeuryがなんだかすらよくわかっていない)
とりあえず1章をやっていたのですが、ステップ8、棒グラフの色を別々にするところで、
「配列の入れ子構造に注意」
とあったのをすっかり見逃し
var wins2 =[[[0,28]],[[1,28]],[[2,21]],[[3,20]],[[4,19]]]; /正解 var wins2 =[[[0,28],[1,28],[2,21],[3,20],[[4,19]]]; /間違い
としてしまい小一時間悩んでおりました。系列が違うので配列も変えなければならないんですね、なるほど。