#79 【参考】インスタンス
Keras3の公式APIドキュメントには、Input関数について、次のように記載されています。
(Google翻訳で和訳しました)
(Google翻訳で和訳しました)
"Kerasテンソルをインスタンス化するために使用されます。
Kerasテンソルは、テンソルに似たシンボリックなオブジェクトです。これには特定の属性が追加されており、モデルの入出力さえ分かればKerasモデルを構築できるようになっています。
例えば、a、b、cがKerasテンソルである場合、『model = Model(input=[a, b], output=c)』といった記述が可能になります。"
Pythonはオブジェクト指向言語ですが、オブジェクト指向を理解する上で重要な『インスタンス』について理解を深めていきましょう。
Pythonでは、文字列や数値等のデータ、機械学習の際のデータの一つ一つに、重複しないID(識別番号)がつけられています。
IDをつけて管理されるデータの一つ一つをインスタンスと言います。
インスタンスが持つ値を出力するためにはprint関数を使ってきましたが、インスタンスのIDを出力するためには、id関数を使用します。具体的にコードを書いて、違いを見てみましょう。
数値一つ一つがインスタンスであって、変数はインスタンスの所在地情報を持っているに過ぎないことがわかると思います。
今度は、リストの例を見てみましょう。
値が等しいかどうかを見るためには『==』、インスタンスのIDが等しいかどうかを見るためには『is演算子』が使われます。p、q、rのリストの値とIDを見てみましょう。
④を見ると、pとqの値も、IDも異なっています。
一方、⑤では、pとrの値は同じですが、IDは異なっています。
変数の値が同じことを『同値』であると言い、IDが同じことを『同一』であると言います。
このように、Pythonでは、数値一つ一つがインスタンスであって、変数はインスタンスの所在地情報を持っているに過ぎないことを理解しておきましょう。
詳しく知りたい方は、下記の書籍をお勧めします。
【参考書籍】Python ゼロからはじめるプログラミング
さて、前述の『Kerasテンソルをインスタンス化』するとは、 『Kerasのモデルの中でデータを流すためのデータの通り道をメモリ上に新しく作成すること』を意味します。
水道の配管工事に例えると、下記のようになります。
本物の数値データ→パイプの中を流れる「水」
Kerasテンソル(keras.Input の戻り値)→水を通すための「透明なプラスチックのパイプ」
1.家を建てるとき(モデル構築時)、いきなり水を流すことはできません。まず「空のパイプ(Kerasテンソル)」を繋ぎ合わせて配管ルートを作ります。これが keras.Input() によるインスタンス化です。
2.配管がすべて組み上がったら、model.fit() を呼び出すことで、初めて「水(本物の画像データ)」を一気に流し込みます。
二つ後のSectionでは、水を一気に流し込む操作『model.fit()』について体験していきます。


コメント
コメントを投稿