導航:首頁 > 網路安全 > 如何轉移神經網路訓練結果

如何轉移神經網路訓練結果

發布時間:2022-09-19 18:46:33

『壹』 在搭建神經網路的時候,如何選擇合適的轉移函數(

一般來說,神經網路的激勵函數有以下幾種:階躍函數 ,准線性函數,雙曲正切函數,Sigmoid函數等等,其中sigmoid函數就是你所說的S型函數。以我看來,在你訓練神經網路時,激勵函數是不輕易換的,通常設置為S型函數。如果你的神經網路訓練效果不好,應從你所選擇的演算法上和你的數據上找原因。演算法上BP神經網路主要有自適應學習速率動量梯度下降反向傳播演算法(traingdx),Levenberg-Marquardt反向傳播演算法(trainlm)等等,我列出的這兩種是最常用的,其中BP默認的是後一種。數據上,看看是不是有誤差數據,如果有及其剔除,否則也會影響預測或識別的效果。

『貳』 如何把訓練好的神經網路保存下來

訓練好網路後加上一句 save My-net net; 就可以啦。其中 My-net 是自己給網路命的名字。需要載入網路時採用 load My-net net;

『叄』 如何訓練神經網路

1、先別著急寫代碼

訓練神經網路前,別管代碼,先從預處理數據集開始。我們先花幾個小時的時間,了解數據的分布並找出其中的規律。

Andrej有一次在整理數據時發現了重復的樣本,還有一次發現了圖像和標簽中的錯誤。所以先看一眼數據能避免我們走很多彎路。

由於神經網路實際上是數據集的壓縮版本,因此您將能夠查看網路(錯誤)預測並了解它們的來源。如果你的網路給你的預測看起來與你在數據中看到的內容不一致,那麼就會有所收獲。

一旦從數據中發現規律,可以編寫一些代碼對他們進行搜索、過濾、排序。把數據可視化能幫助我們發現異常值,而異常值總能揭示數據的質量或預處理中的一些錯誤。

2、設置端到端的訓練評估框架

處理完數據集,接下來就能開始訓練模型了嗎?並不能!下一步是建立一個完整的訓練+評估框架。

在這個階段,我們選擇一個簡單又不至於搞砸的模型,比如線性分類器、CNN,可視化損失。獲得准確度等衡量模型的標准,用模型進行預測。

這個階段的技巧有:

· 固定隨機種子

使用固定的隨機種子,來保證運行代碼兩次都獲得相同的結果,消除差異因素。

· 簡單化

在此階段不要有任何幻想,不要擴增數據。擴增數據後面會用到,但是在這里不要使用,現在引入只會導致錯誤。

· 在評估中添加有效數字

在繪制測試集損失時,對整個測試集進行評估,不要只繪制批次測試損失圖像,然後用Tensorboard對它們進行平滑處理。

· 在初始階段驗證損失函數

驗證函數是否從正確的損失值開始。例如,如果正確初始化最後一層,則應在softmax初始化時測量-log(1/n_classes)。

· 初始化

正確初始化最後一層的權重。如果回歸一些平均值為50的值,則將最終偏差初始化為50。如果有一個比例為1:10的不平衡數據集,請設置對數的偏差,使網路預測概率在初始化時為0.1。正確設置這些可以加速模型的收斂。

· 人類基線

監控除人為可解釋和可檢查的損失之外的指標。盡可能評估人的准確性並與之進行比較。或者對測試數據進行兩次注釋,並且對於每個示例,將一個注釋視為預測,將第二個注釋視為事實。

· 設置一個獨立於輸入的基線

最簡單的方法是將所有輸入設置為零,看看模型是否學會從輸入中提取任何信息。

· 過擬合一個batch

增加了模型的容量並驗證我們可以達到的最低損失。

· 驗證減少訓練損失

嘗試稍微增加數據容量。

『肆』 百度知道

為了訓練的需要,要不然會出差錯

1. 背景介紹

近些年來,隨著Siri的走紅,類似Siri、搜狗語音助手這樣利用語音實現控制,語義理解的系統開始大量涌現。而語音識別系統作為這類系統的入口,很大程度上決定了這類應用的質量。沒有一個好的語音識別系統做支撐,再好的助手也只能乾瞪眼。

與此同時,隨著微信的發展,越來越多的用戶反饋,在多種場合下不方便收聽語音,需要將語音轉換成文字。許多微信公眾號也表示需要將語音識別成文字,以便進一步的處理。在此形勢下,提高我司現有語音識別系統的准確率成為了迫切的任務。

之前主流的語音識別系統都是採用HMM-GMM技術。近些年來,隨著深度神經網路(Deep neural network)技術的的發展,越來越多的系統採用HMM-DNN技術。這項技術把描述特徵發射概率的模型從混合高斯模型(GMM)替換為深度神經網路(DNN),從而使系統的錯誤率下降了20%~30%。

2. 相關產品

當前市場上的採用DNN技術的主要競品有訊飛的相關產品,包括訊飛語音輸入法和訊飛口訊等產品、以及某互聯網公司的輸入法等。

科大訊飛是當前語音行業的領航者,在語音行業有十幾年的歷史,在Siri推出前就已經推出了訊飛語音輸入法等產品,在數據積累方面具有其他公司無法比擬的優勢。而行業內另一家互聯網公司則是聲稱國內最早將DNN技術應用到語音識別產品中的公司。

3. 技術介紹

3.1 深度神經網路

為了描述神經網路,我們先介紹最簡單的神經網路,該神經網路只由一個神經元構成,如圖1所示。

圖1 神經元
圖1所示的神經元接受3個輸入,x1,x2,x3,和一個偏置+1, 其輸出為

其中Wi 為xi在輸入中的權重。函數f(x)被稱作激活函數。

圖2. 神經網路

神經網路將許多個單一的神經元連接在一起,如圖2所示。神經網路最左邊的一層叫做輸入層,最右的一層叫做輸出層。中間節點組成的一層叫做隱藏層.

3.2 深度神經網路在聲學模型中的應用

深度神經網路則是層數較多的神經網路。雖然神經網路很早之前就已經提出,但因為計算量的問題,神經網路的層數一直無法提升。近年來隨著神經網路理論的進一步發展和計算能力的不斷提高,特別是GPU的出現,才使得深度神經網路得以發揮其威力。

圖3. 使用DNN作為聲學模型[1]

圖3說明了DNN是如何替代GMM應用到聲學模型中的。圖3中上半部分是HMM的結構,HMM的結構和轉移概率是HMM-GMM模型訓練的結果。圖3中間部分是描述了一個DNN,這個DNN模型來決定HMM的發射概率。通常情況下這個DNN模型的層數不會小於5層,每層大概數千個神經元組成。圖3中的下半部分是DNN模型的輸入,需要注意的是DNN模型的輸入是多幀特徵,而不是GMM模型中一幀。在識別語音的過程中,一小段語音都會被提取成上圖中所對應的Observation,並根據HMM中的狀態計算發射概率(也就是跟不同的發音比較相似度),選擇發射概率最大路徑作為最終的結果。

圖4. DNN聲學模型的訓練流程

圖4說明了DNN聲學模型的訓練流程。在訓練DNN模型之前,我們首先訓練出一個HMM-GMM模型來做強制對齊(forced alignment)。強制對齊的結果作為DNN訓練的樣本提交GPU上訓練DNN模型,這個過程包含了兩部分,首先是基於GPU的Pretrain,使神經網路有一個好的起點。然後使用BP演算法對神經網路進行Fine Tuning,得到最終的模型。

3.3 DNN訓練與識別系統的工程優化

DNN網路具有數據巨大的參數需要學習,每一層網路都有數百萬的參數,而下一層網路的輸入又是上一層網路的輸出,通常情況下訓練一個3.2節中所述的聲學模型需要近兩千個CPU內核運行近一個月。此外,由於聲學模型所用到的DNN較為特殊:每一層的一個神經元都依賴上一層的所有神經元,因此,如果把模型不同層次切分到不同的伺服器上分別進行訓練的話,會帶來巨大的網路開銷,使系統實際上不可用,因此我們在訓練DNN的過程中使用了GPU,並通過不斷的優化,使得訓練速度相比單台伺服器有近兩千倍的速度提高,從而使DNN模型的訓練成為現實。

此外,為了使DNN模型可以應用到線上的服務中,我們對DNN在CPU上的計算也做了優化,在幾乎不影響准確率的情況下,將計算速度提升了將近10倍。

4. 實驗結果

通過DNN模型的應用,我們語音識別系統的字錯誤率下降了40%左右,根據第三方的測試已經超過網路,並有望追上訊飛。

『伍』 神經網路,訓練樣本過多,怎樣先用一組數據訓練後再用另一組數據訓練(在上組數據訓練結果的基礎上)

繼承權重啊。
但是這樣的話新訓練的權重對於舊的數據是無效的。

『陸』 如何把電腦訓練好的神經網路移植到app上

這個要重新編寫程序了。如果你的電腦的程序與手機的APP程序不兼容就沒法了。還是就是如果匹配了那些文件一般要寫入APP程序的某個文件里,首先你要找到你電腦程序寫入的文件,然後在復制到手機APP的程序寫入的地方方便讀取就可以了

『柒』 如何讓利用神經網路進行預測,怎麼在進行訓練之後,怎麼看出訓練模型的好壞如何進行評判

可以用MATLAB神經網路工具箱,先提取樣本,用mapminmax函數歸一化,再newff函數建立網路,設置好訓練參數後,使用train函數訓練,最後用sim函數看預測結果。

在訓練過程中,有一個performance可以觀察,它的訓練目標就是你設置的goal。在訓練過程中,它會自動分出一部分樣本作為validation驗證,可以保證不過擬合。具體要評價效果還是應該看最後預測的精度。

附件是一個BP預測的實例。

『捌』 怎麼把在matlab中訓練好的BP神經網路移植到單片機上進行數據實時監測分類

一般是單片機採集數據,中央超級計算機進行數據處理和分類

『玖』 BP神經網路如何把訓練後的權值輸入至MATLAB 建立網路 完成預測

這個就只能自己編M文件實現了,給個例子你看看

% script: main_batch.m
% 批量方式訓練BP網路,實現性別識別

%% 清理
clear all
clc

%% 讀入數據
% xlsfile='student.xls';
[data,label]=getdata();

%% 劃分數據
[traind,trainl,testd,testl]=divide(data,label);

%% 設置參數

rng('default')
rng(0)
nTrainNum = 60; % 60個訓練樣本
nSampDim = 2; % 樣本是2維的

%% 構造網路
net.nIn = 2; % 輸入層2個神經元,分別輸入身高、體重
net.nHidden = 3; % 3個隱含層節點
net.nOut = 1; % 1個輸出層節點
w = 2*(rand(net.nHidden,net.nIn)-1/2); % nHidden * 3 一行代表一個隱含層節點
b = 2*(rand(net.nHidden,1)-1/2);
net.w1 = [w,b];
W = 2*(rand(net.nOut,net.nHidden)-1/2);
B = 2*(rand(net.nOut,1)-1/2);
net.w2 = [W,B];

%% 訓練數據歸一化
mm=mean(traind);
% 均值平移
for i=1:2
traind_s(:,i)=traind(:,i)-mm(i);
end
% 方差標准化
ml(1) = std(traind_s(:,1));
ml(2) = std(traind_s(:,2));
for i=1:2
traind_s(:,i)=traind_s(:,i)/ml(i);
end

%% 訓練
SampInEx = [traind_s';ones(1,nTrainNum)];
expectedOut=trainl;

eb = 0.01; % 誤差容限
eta = 0.6; % 學習率
mc = 0.8; % 動量因子
maxiter = 2000; % 最大迭代次數
iteration = 0; % 第一代

errRec = zeros(1,maxiter);
outRec = zeros(nTrainNum, maxiter);
NET=[]; % 記錄
% 開始迭代
for i = 1 : maxiter
hid_input = net.w1 * SampInEx; % 隱含層的輸入
hid_out = logsig(hid_input); % 隱含層的輸出

ou_input1 = [hid_out;ones(1,nTrainNum)]; % 輸出層的輸入
ou_input2 = net.w2 * ou_input1;
out_out = logsig(ou_input2); % 輸出層的輸出

outRec(:,i) = out_out'; % 記錄每次迭代的輸出

err = expectedOut - out_out; % 誤差
sse = sumsqr(err);
errRec(i) = sse; % 保存誤差值
fprintf('第 %d 次迭代 誤差: %f\n', i, sse);
iteration = iteration + 1;
% 判斷是否收斂
if sse<=eb
break;
end

% 誤差反向傳播
% 隱含層與輸出層之間的局部梯度
DELTA = err.*dlogsig(ou_input2,out_out);
% 輸入層與隱含層之間的局部梯度
delta = net.w2(:,1:end-1)' * DELTA.*dlogsig(hid_input,hid_out);

% 權值修改量
dWEX = DELTA*ou_input1';
dwex = delta*SampInEx';

% 修改權值,如果不是第一次修改,則使用動量因子
if i == 1
net.w2 = net.w2 + eta * dWEX;
net.w1 = net.w1 + eta * dwex;
else
net.w2 = net.w2 + (1 - mc)*eta*dWEX + mc * dWEXOld;
net.w1 = net.w1 + (1 - mc)*eta*dwex + mc * dwexOld;
end
% 記錄上一次的權值修改量
dWEXOld = dWEX;
dwexOld = dwex;

end

%% 測試
% 測試數據歸一化
for i=1:2
testd_s(:,i)=testd(:,i)-mm(i);
end

for i=1:2
testd_s(:,i)=testd_s(:,i)/ml(i);
end

% 計算測試輸出
InEx=[testd_s';ones(1,260-nTrainNum)];
hid_input = net.w1 * InEx;
hid_out = logsig(hid_input); % output of the hidden layer nodes
ou_input1 = [hid_out;ones(1,260-nTrainNum)];
ou_input2 = net.w2 * ou_input1;
out_out = logsig(ou_input2);
out_out1=out_out;

% 取整
out_out(out_out<0.5)=0;
out_out(out_out>=0.5)=1;
% 正確率
rate = sum(out_out == testl)/length(out_out);

%% 顯示
% 顯示訓練樣本
train_m = traind(trainl==1,:);
train_m=train_m';
train_f = traind(trainl==0,:);
train_f=train_f';
figure(1)
plot(train_m(1,:),train_m(2,:),'bo');
hold on;
plot(train_f(1,:),train_f(2,:),'r*');
xlabel('身高')
ylabel('體重')
title('訓練樣本分布')
legend('男生','女生')

figure(2)
axis on
hold on
grid
[nRow,nCol] = size(errRec);
plot(1:nCol,errRec,'LineWidth',1.5);
legend('誤差平方和');
xlabel('迭代次數','FontName','Times','FontSize',10);
ylabel('誤差')

fprintf(' ----------------錯誤分類表----------\n')
fprintf(' 編號 標簽 身高 體重\n')
ind= find(out_out ~= testl);
for i=1:length(ind)
fprintf(' %4d %4d %f %f \n', ind(i), testl(ind(i)), testd(ind(i),1), testd(ind(i),2));
end

fprintf('最終迭代次數\n %d\n', iteration);
fprintf('正確率:\n %f%%\n', rate*100);

閱讀全文

與如何轉移神經網路訓練結果相關的資料

熱點內容
小米8藍牙共享網路怎麼用 瀏覽:76
國安網路信息怎麼保護 瀏覽:944
網路詐騙案打電話判多少年 瀏覽:296
xp啟用無線網路連接 瀏覽:946
網路拆機拆錯了怎麼辦 瀏覽:45
聯通關閉網路異常提醒 瀏覽:113
網路增加共享計算機 瀏覽:110
如何注銷wifi網路 瀏覽:808
不同網路信號可以傳輸數據嗎 瀏覽:354
現在手機網路信號怎麼這么差 瀏覽:364
南陽網路營銷論壇 瀏覽:515
網路安全人才安全 瀏覽:961
湖北百度網路推廣要做哪些 瀏覽:532
微信連接不到移動網路 瀏覽:23
蘋果網路驅動下載 瀏覽:848
網路正常wifi拒絕接入 瀏覽:591
糾正手機網路錯誤的軟體 瀏覽:149
網路電影著作權如何舉證 瀏覽:944
網路安全從我做起手抄報最新版本 瀏覽:603
移動魔百和有線怎麼設置網路 瀏覽:333

友情鏈接