『pytorch & 深層学習プログラミング』 備忘録1章
print(np.arange(-10,10,2))
print(np.linspace(-10,10,2))
def after_bibun(f):
#微分する関数を中に作る
def bibun(x):
h = 1e-6
return (f(x+h) - f(x-h) / (2*h))
return bibun
print ('this is a sentence.')
print ('\this is a sentence with an indent.')
print (r'\this is a sentence with an indent') # 「r」があるとそれ以降の文字列をエスケープシーケンスとして認識しない
このように、事故でエスケープシーケンスと認識されてしまう事を防いだりできる。
エスケープシーケンス
:「\」と英字を組み合わせて、特殊な意味を持たせられる文字の並び(sequence)の事。上の例なら、thisの「t」という役割から免れる(escape)ことが出来る文字の並びがあるよ、ということだと勝手に理解している。
オブジェクト指向とは結局なんなのか
色々な本にオブジェクト指向の大切さが書かれているけれど、結局何なのか。
まず、何がオブジェクトなんだろうという疑問がずっとあった。オブジェクトは「モノ」という意味で、pythonにおける「モノ」とは何かが重要だ。調べた結果、それはすなわちクラスから作られたインスタンスのことなのだと分かった。
オブジェクト=インスタンス
と考えて差し支えないような気がした。そのインスタンスすなわち「モノ」を使って、プログラムしていく。
だからオブジェクト指向とは、まずクラスを作って、そこからインスタンス(オブジェクト)を生成する方向性で開発しようねという考え方なのかなと思った。
一般化してからコード作れよ、ということだろうか。今はそのくらいでいいやと思った。
(参考HP)
解析的な微分と数値微分
初めて聞いた言葉だったが、これまで知っていた微分の概念にただ名前がついただけだった。
- 解析的な微分は公式に則って微分すること(log(x)の微分は1/xになるとか
- 数値微分は微分の定義に従ってlim飛ばして気合で計算すること
しかし、上記の説明は表層を見ただけの説明にすぎず、根本的な違いは以下参照。
無限と有限
:実は両者には、無限と有限という対照的な違いがある。
機械学習において、数値微分ではlimを飛ばすときのhを限りなく小さいが有限の値に設定する。つまりこの計算は有限であり、また離散的となる。一方解析的な微分は無限を含んだ微分であり、これはコンピューターには難しい計算らしい。