深度学習ベース0330
9606 ワード
preview
概念論:input-weightに=>値を乗算し、オフセットを加えて、関数をアクティブにして出力する値を決定します.
多次元を使うので、行列の積がわかります!
例えば、2 x 3と2 x 2の対応行列が異なるため、計算できない
How to define the node count?
入力レイヤのノード数は、処理するデータ数に等しい.
出力レイヤのノード数は設計できます.
ニューラルネットワークをどこに使用するかは、最終的な結果に基づいて
せっけいしゅつりょくそう
ぶんかつ
データがどのクラスに属するかを決定
写真の人物の性別を確認する
回帰
入力データから連続する数値を予測する
写真の中の人物の体重を予測する
(ex.豚の個体体重予測)
一定の関数(Identify Function)
入力値が出力に等しい=>入力-出力が等しい
軟脈
いくつかの値がある場合、比重を計算すると、0.5,0.6...等価値が総価値に占める割合はいくらですか?=>比例換算
ひれい
総数に占める割合はいくらですか.
ソフトMax関数の実装
import numpy as np
a = np.array([0.3, 2.9, 4.0])
exp_a = np.exp(a) # 지수 함수
print(exp_a) # [ 1.34985881 18.17414537 54.59815003]
sum_exp_a = np.sum(exp_a) # 지수 함수의 합
print(sum_exp_a) # 74.1221542101633
y = exp_a / sum_exp_a
print(y) # [0.01821127 0.24519181 0.73659691]
分類するとき、最大出力値4.0
前の入力では4.0に分割される可能性が高い.
マトリクスの計算を混同しないでください.
ソフトMax関数を実装する際の注意点
オーバーフローとは何ですか?
コンピュータで表現できる数字の範囲を超えている
指数を使用する場合、数値を表す範囲を超えると、出力の結果が異なります.
E^100=>0は40個の非常に大きな値です
E^1000=>無限大値
shiftは表示範囲に適用します.
a = np.array([1010, 1000, 990])
# print(np.exp(a) / np.sum(np.exp(a))) #소프트맥스 함수의 계산
# RuntimeWarning: overflow encountered in exp
c = np.max(a) # c = 1010(최댓값)
print(a - c) # [ 0 -10 -20]
print(np.exp(a - c)/ np.sum(np.exp(a - c))) # [9.99954600e-01 4.53978686e-05 2.06106005e-09]
ソフトMax関数の特徴
関数の出力は0~1.0の実数です.
関数出力の合計は1=>ソフトMax関数の重要な性質である
ソフトMax関数を利用して,確率(統計)方式で問題に応答する
サイズ順の差異なし=>単調増分関数
たんちょうぞうぶんかんすう
「関数が単調なのはどういう意味ですか?」「先生の声は単調だ」というのは眠気の音です.いくつかの特徴が一定のタイミングを保つと,単調であると考えられる.単調関数はこれと同じで、関数の増減が変わらない関数です.以下、関数f:DrightarrowCf:D→Cは単調増分関数(単調増分関数)の数学的定義である[1].
https://hashmm.com/post/monotonic-functions/
最大の値しか必要としない場合は、見た値から計算できるので省略できます.
出力レイヤのニューロンを修正するには
分類するデータに基づきます.
犬/猫に分類しようとすると、どの値を入力しても犬/猫の2種類に分類されます.
山に火事があるかどうかを確認するには?火がつくとOが燃えないとX
分類するクラスの数を決定
手書きデジタル認識実習
出力レイヤ:10(0~9)
勉強する
収集されたデータセットを使用して識別フィーチャーを検索
学習の過程は入力したデータで重みとオフセットを求める過程である.
入力したデータが多ければ多いほど、学習能力が強くなります.
複雑な原理と過程を必要とする
推論する
マトリックス演算
学習のニューラルネットワークに新しいデータ(学習、テスト、評価)を入力して分類し、識別します.
純粋な伝播の使用
実習
MNISTデータセットを使用して手書き数字を識別
学習プロセスをスキップ(学習モデルを使用)
推論過程のみを実施し、実践する.
MNISTデータセット
28 X 28サイズ(784)、各画素1 BYTE=>784 BYTE
合計784個を入力すると、実際の意味での数字にラベルが貼られます.
実習要件
1) ./
実行するPythonコードを含むディレクトリ
2) mnist.py
./dataset/mnist.pyとして保存
3) functions.py
./common/functions.pyとして保存
4) sample_weight.pkl
ニューラルネットワークモデルを含むファイル
./(現在のディレクトリ)に保存
MNISTデータセットを読み込み、ジオメトリを確認する
import sys, os
sys.path.append(os.pardir) # 부모 디렉토리의 경로
import numpy as np
from dataset.mnist import load_mnist
from PIL import Image
def img_show(img):
pil_img = Image.fromarray(np.uint8(img))
pil_img.show()
(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)
img = x_train[0]
label = t_train[0]
print(label) # 5
print(img.shape)
img = img.reshape(28, 28)
print(img.shape)
img_show(img)
Reference
この問題について(深度学習ベース0330), 我々は、より多くの情報をここで見つけました https://velog.io/@allzeroyou/딥러닝기초0330テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol