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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Python

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

Q&A

解決済

3回答

1289閲覧

pythonでの機械学習 関数について

katsun

総合スコア18

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2017/06/08 07:18

pythonで機械学習を独学で行っています。
コードの意味がイマイチ理解できない部分があったので分かりやすく説明していただけたらうれしいです。

コード

def init_network():
network={}
network["W1"] = np.array([[0.1,0.3,0.5],[0.1,0.4,0.6]])
network["b1"] = np.array([[0.1, 0.2, 0.3]])
network["W2"] = np.array([[0.1, 0.4],[0.2,0.5], [0.3,0.6]])
network["b2"] = np.array([[0.1, 0.2]])
network["W3"] = np.array([[0.1, 0.3], [0.2, 0.4]])
network["33"] = np.array([[0.1, 0.2]])

return network

上記のコードで何が行われているのかがわかりません。
関数を定義しているのは分かるのですが、init_ををつける意味やnetwork={}の意味がわかりません。
上記のコードで行われていることを文章で説明していただけませんか?

非常に大雑把な質問で申し訳ないです。
よろしくお願いします。

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

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

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

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

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

guest

回答3

0

init_が付いているのは、networkを初期化する関数だと名前でわかるようにしているだけでしょう。
Pythonで関数名をinit_で始めたからと言って、特別なことが起こるわけではありません。

network = {}

は、networkを空の辞書オブジェクトとして初期化しています。辞書オブジェクトであれば

network["key"] = value

としてkeyとvalueの組を追加できますが、未使用の変数に対していきなりこのような記述ができないための方法です。
空ではなく、1つ目の組を初期値として、それ以降を追加していけるように

network = {"W1": np.array([[0.1,0.3,0.5],[0.1,0.4,0.6]])}

とすることもできますが、以降の項目の追加と記述方法が変わってしまうのを嫌ったのでしょう。

投稿2017/06/08 07:41

m-take

総合スコア249

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

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

katsun

2017/06/08 07:45

回答ありがとうございます! ちょうど辞書オブジェクトの中の書き方でわからなかった部分を説明していただけたので助かりました
guest

0

ベストアンサー

ニューラルネットワーク入門 (Python)を参考にされていると思います。

まずdef init_network():ではinit_networkという名前の関数を定義しています。
関数名は、分かりやすい名前を自由につけることができます。
この場合はnetworkを初期化するという意味でinit_をつけていると思われます。

network = {}networkという名前の辞書(dictionary)型の変数を作成しています。
つづくnetwork["W1"] = np.array([[0.1,0.3,0.5],[0.1,0.4,0.6]])
W1という文字列(キー)などに、numpy配列(行列)を紐づけています。
これにより、のちの処理で、名称から行列を簡単に取得することができます。

上記はpythonの基本的な知識ですので、まずは以下などで簡単でよいので基礎的な学習をすることをお勧めします。
Dive Into Python 3 日本語版

投稿2017/06/08 07:33

can110

総合スコア38266

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

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

katsun

2017/06/08 07:42

回答ありがとうございます! 多くのことがすっきりしました。 非常にわかりやすい説明をしていただき理解しやすかったです。 ちなみになのですが、 network["W1"] = np.array([[0.1,0.3,0.5],[0.1,0.4,0.6]]) の[”W1”]はなぜ[]なのでしょうか。 答えづらい質問で申し訳ございません。
can110

2017/06/08 07:46

単純にpythonの言語仕様として「そういう決まりになっている」からです。 このあたりは理屈で覚えるというより、仕様を確認したりコードを書いて慣れるのがよいかと思います。
guest

0

python

1network = {}

これは辞書オブジェクトを宣言しています。

python

1def init_network():

これは単純に関数の名前です。意味としてはnetworkという辞書を初期化(initialize)するという意味でinti_networkという名前にしているのでしょう。
戻り値は辞書オブジェクトnetworkですので

python

1network = init_network()

このように使います。

投稿2017/06/08 07:28

_Victorique__

総合スコア1392

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問