質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2878閲覧

数値微分をしたグラフに接線を引くコードが読めません

python6051

総合スコア8

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/20 15:12

「ゼロからつくるDeep Learning」で学習を進めています。
そこで数値微分をし、微分をした点で接線を引くコードを読んでいたのですが、どのような式になっているのか分かりません。特にlambdaが出てきたあたりから、読めなくなりました。
以下にコードを載せます。

python3

1import numpy as np 2import matplotlib.pylab as plt 3 4 5def numerical_diff(f, x): 6 h = 1e-4 # 0.0001 7 return (f(x+h) - f(x-h)) / (2*h) 8 9 10def function_1(x): 11 return 0.01*x**2 + 0.1*x 12 13 14def tangent_line(f, x): 15 d = numerical_diff(f, x) 16 print(d) 17 y = f(x) - d*x 18 return lambda t: d*t + y 19 20x = np.arange(0.0, 20.0, 0.1) 21y = function_1(x) 22plt.xlabel("x") 23plt.ylabel("f(x)") 24 25tf = tangent_line(function_1, 5) 26y2 = tf(x) 27 28plt.plot(x, y) 29plt.plot(x, y2) 30plt.show()

分からない場所としては、tf=tangent_line(function_1,5)とy2 = tf(x)でtfとtf(x)と表記する意味が分かりません。lambdaを使った時の特有の表記なのでしょうか?質問の情報に不備があった場合はご指摘ください。ご教授いただければ幸いです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2020/05/20 15:27

tangent_line は関数を返す関数で、tf(x) はその返ってきた関数に対して x を適用しています。 また、numerical_diff は関数を引数に取る関数ですが、こっちは大丈夫ですか?
python6051

2020/05/20 15:42

返信ありがとうございます。 はい、tangent_lineとnumerical_diffの意味は大丈夫です。
python6051

2020/05/20 15:46

返ってきた関数がd*t+yで、tf(x)ではその関数のtの部分にxを代入しているということでしょうか?
python6051

2020/05/20 15:54

夜分遅くに何度も失礼します。 tfをtf(x)にするだけでt→xに変えられるのはなぜなのでしょうか?
hoshi-takanori

2020/05/20 15:58

tf は関数で tf(x) は計算結果なので、「t→xに変えた」というか、t に x の値を代入して計算した結果です。 tangent_line(function_1, 5) とすると f → function_1, x → 5 として計算するのと同じことです。
python6051

2020/05/20 16:04

しっくりきました!ありがとうございます! なにか簡単に回答に書いていただければベストアンサーにさせていただきますので、もしよろしければお願いします<(_ _)>
guest

回答1

0

ベストアンサー

tangent_line は関数を返す関数で、tf(x) はその返ってきた関数に対して x を適用しています。
lambda t: dt + y というのが名前のない関数を作る書き方で、tf(x) とすると dt + y の t に x を代入して計算を行います。

参考: Pythonのlambdaって分かりやすい - Qiita

投稿2020/05/20 16:15

編集2020/05/20 16:18
hoshi-takanori

総合スコア7901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

python6051

2020/05/20 16:17

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問