神經網路學習筆記2

2022-02-02 11:01:31 字數 2319 閱讀 6633

預處理:將各個畫素值除以255,進行了簡單的正則化。

考慮打包輸入多張影象情形,使用predict()一次性打包處理100張影象

x形狀:100*784

for i in

range(0,len(x),batch_size):

x_batch=x[i:i+batch_size] #

通過x[i:i+batch_size]從輸入資料中抽出批資料

y_batch=predict(network,x_batch)

p=np.argmax(y_batch,axis=1) #

通過argmax()獲取值最大的元素索引

accuracy_cnt+=np.sum(p==t[i:i+batch_size])

range():指定為range(start,end),生成乙個由start到end-1之間的整數構成的列表

使用for語句逐一取出儲存在x中的影象資料通過predict()函式進行分類。predict函式以numpy陣列的形式輸出各個標籤對應的概率,取出概率列表中最大的值的索引作為**結果。可以使用np.argmax(x)函式取出陣列中最大值的索引。np.argmax(x)將獲取被賦給引數x的陣列中最大值元素的索引。最後,比較神經網路所**的答案和正確解的標籤,將回答正確的概率作為識別精度。

通過x[i:i+batch_size]從輸入資料中抽出批資料:會取出從i到第i+batch_n個之間的資料,取出樣例如x[0:100],x[100:200]...從頭開始以100為單位將資料提取為批資料

然後通過argmax()函式獲取值最大的元素的索引

axis=1:指定在100*10陣列中,沿著第一位方向找到值最大的元素索引

使用批處理可以實現高速高效的運算

完整實現**如下:

#

coding: utf-8

import

sys, os

#為了匯入父目錄的檔案而進行的設定

import

numpy as np

import

pickle

from dataset.mnist import

load_mnist

from common.functions import

sigmoid, softmax

defget_data():

(x_train,t_train),(x_test,t_test) = load_mnist(normalize=true,flatten=true,one_hot_label=false)

return

x_test,t_test

definit_network():

with open(

"sample_weight.pkl

",'rb

') as f:

network =pickle.load(f)

return

network

defpredict(network,x):

w1,w2,w3=network["

w1"],network["

w2"],network["w3"

] b1,b2,b3=network["

b1"],network["

b2"],network["b3"

] a1=np.dot(x,w1)+b1

z1=sigmoid(a1)

a2=np.dot(z1,w2)+b2

z2=sigmoid(a2)

a3=np.dot(z2,w3)+b3

y=softmax(a3)

return

yx,t=get_data()

network=init_network()

batch_size=100accuracy_cnt=0

for i in

range(0,len(x),batch_size):

x_batch=x[i:i+batch_size] #

通過x[i:i+batch_size]從輸入資料中抽出批資料

y_batch=predict(network,x_batch)

p=np.argmax(y_batch,axis=1) #

通過argmax()獲取值最大的元素索引

accuracy_cnt+=np.sum(p==t[i:i+batch_size])

print("

accuracy:

"+str(float(accuracy_cnt)/len(x)))

mini-batch 使用mini-batch進行學習

梯度:梯度指示的方向是各個點函式值減少最多的方向

pytorch神經網路學習筆記 2

關係擬合 import torch from torch.autograd import variable import torch.nn.functional as f import matplotlib.pyplot as plt x torch.unsqueeze torch.linspace...

神經網路 學習(2)

初始化,不能一開始全部全設成0,因為這樣的話,隱層結點就會變得全部一樣,體現不出神經網路多層多結點的優越性。咦 如果層數很多的話,超過三層,那麼有個潛規則就是中間的幾層的隱節點數一般都是一樣大小 隱節點數稍微大點輸入結點個數這個是極好的。下面就是幾個步驟 第一步,隨機化引數 第二步,前向得到乙個結果...

神經網路學習筆記

隱含層數越多,越容易擬合複雜函式 為了擬合複雜函式需要的隱含節點數目,基本上隨著隱含層數目的增加呈現指數下降的趨勢,也就是說層數越多,神經網路所需要的隱含節點可以越少。層數越深,概念越抽象,需要背誦的知識點 神經網路的隱含節點 就越少。但是,層數越多,容易出現過擬合以及引數難以除錯以及梯度瀰散的問題...