🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

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

Q&A

1回答

1096閲覧

ニューラルネットワークとCNNの具体的な説明

OWATA0723hk

総合スコア6

Python

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

0グッド

0クリップ

投稿2021/01/08 02:19

編集2021/01/08 02:24

参考書や参考文献を読んで、ニューラルネットワークとCNNについて勉強しているが、
具体的な部分について理解ができなかった。

・隠れ層の数、その中のニューロンの数は任意の値に設定できるが、基準が分からない。

・特徴マップの例を見る限り0以下の数値が入ることはないが、ReLU関数は必要なのか?

・CNNのフィルタの大きさの指定は理解したが、中身はどうなっているのか?

・学習データの保存でjsonファイルとhdf5ファイルを用いるが、中身はどうなっているのか?

・PythonではコンパイルはいらないのにCNNのモデルにコンパイルが必要なのはなぜ?

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

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

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

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

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

A_kirisaki

2021/01/08 03:40

Python というよりは機械学習が主な話題のようですのでタグを付け替えましょう。そして質問はできるだけ絞り込んで少なくしましょう。
quickquip

2021/01/08 15:52

ぜんぜん本題と関係ないのでここで書きますが > Pythonではコンパイルはいらない は、Pythonではコンパイルと実行が1つのコマンドでできる&コンパイルした結果がファイルで残るとは限らないというだけで、"いらない"は正しくないかと。
ppaul

2021/01/09 01:14

quickquipさんのおっしゃるとおりで、コンパイル言語とかインタプリタ言語とかいうのは境界はあいまいです。 質問文があいまいなので、解釈によって解凍は変わりますが、機能としてのコンパイルがpythonではどのように実装されているかは以下のとおりです。ファイルから読み込んだテキストや、対話型環境で読み込んだテキストは、Parserと呼ばれる機能によってAST(抽象構文木)に変換されます。抽象構文木はCompileという機能によってバイトコードに変換されます。ファイルから読み込んだ場合はそのバイトコードを.pycというファイルに格納して、次回に再利用することもあります。pythonのインタプリタはこのバイトコードを一つずつ調べながら実行していきます。 機能としてコンパイルがあるかというと間違いなくありますし、コンパイルの指示を出さなければならないかというと意識しては出していませんので、質問の解釈次第で、どうとでも答えられるのです。 私が回答の中で書いたのは、機械学習を行う人たちが気にする性能の問題です。C/C++のようにCPUの機械語を出力するシステムの方が性能は高いのは当然なのですが、普通の人が作っても専門家の作ったライブラリを超えるのは非常に難しと言うことだけは覚えておいて欲しいと思ってあのような回答になりました。
guest

回答1

0

・隠れ層の数、その中のニューロンの数は任意の値に設定できるが、基準が分からない。

柱や板やノコギリやカナヅチは部品とか道具です。それを使ってどんな建物を建てるかが本当の建築です。
それと同じようにtensorflowとかpytorchとかは道具や部品にすぎません。解きたい問題に対して、何層にするか、各層のノード数を幾つにするか、層間の結合をどうするのかというのがディープラーニングの本当の課題です。そのために、犬小屋の設計図を渡して実装してみましょうというのが入門書なのです。

・特徴マップの例を見る限り0以下の数値が入ることはないが、ReLU関数は必要なのか?

活性化関数は脳科学で言うと、シナプスの終端で放出されたカルシウムイオンを受容体が受ける感度やその結果起こる神経細胞の興奮を模倣したものだと理解しています。
線形計算だけでは、学習にならないから活性化関数を使います。
活性化関数の一種であるReLUが役に立つときも、立たないときもあります。どの活性化関数を選ぶかも設計の重要な部分です。

・CNNのフィルタの大きさの指定は理解したが、中身はどうなっているのか?

Convolutionはたたみ込み関数と言って、積分で定義されるものです。コンピュータの場合はそれを離散化したものです。。Convolution(畳み込みとは)を見ると分かりますが、離散化すると内積計算となります。
CNNネットワークは近くにあるものの影響を受けやすくするような層間結合です。より近いものを強く見るか、遠くのものまで強く見るかのために範囲の指定をします。指定範囲を広げると学習速度が遅くなります。画像分類では大脳の視覚野の動きがconvolutionで模倣できるという仮説でやってみて、結果が良かったのでそれを使うことが多いようです。

・学習データの保存でjsonファイルとhdf5ファイルを用いるが、中身はどうなっているのか?

josonはテキストファイルですので、エディタなどで中身を見てみてください。ファイルの定義はJSONの形式を完全理解して読み書きできるようになるための記事あたりを読んでください。
hdf5はテキストファイルではないので、単純に中身を見るのは難しいですね。使っている人は大勢いますが、内部構造を知っている人は少ないです。私も知りません。知りたければWelcome to the HDF5 Support Page!を読むのが確実ですが、ハードルが高いですね。

・PythonではコンパイルはいらないのにCNNのモデルにコンパイルが必要なのはなぜ?

pythonでは、コンパイル済みの汎用部品(ライブラリ)を組み込んであるので、適当なパラメータを指定すれば実行できます。パラメータの解析などのオーバーヘッドがあるのでコンパイラ言語で作った方が速くなる可能性もなくはありません。実際には、素人が作るとCPUやGPUの特長を生かした機械命令をアセンブラなどを使って作ったライブラリより速いものを作るのは難しいです。C/C++を使う場合も提供されたライブラリ(BLAS,Lapack)を使うことになり、同じライブラリを呼び出しているpythonでもそれほど遅くはなりません。

投稿2021/01/08 04:09

編集2021/01/08 14:15
ppaul

総合スコア24670

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問