当前位置:网站首页>Analyse de 43 cas de réseaux neuronaux MATLAB: Chapitre 42 opérations parallèles et réseaux neuronaux - - opérations parallèles de réseaux neuronaux basées sur CPU / GPU
Analyse de 43 cas de réseaux neuronaux MATLAB: Chapitre 42 opérations parallèles et réseaux neuronaux - - opérations parallèles de réseaux neuronaux basées sur CPU / GPU
2022-07-02 03:23:00 【Mozun 2020】
《MATLAB Réseau neuronal43Études de cas》:No42Chapitre Opérations parallèles et réseaux neuronaux——Basé surCPU/GPUFonctionnement parallèle du réseau neuronal
1. Préface
《MATLAB Réseau neuronal43Études de cas》- Oui.MATLABForum technique(www.matlabsky.com)Planification,Dirigé par M. Wang Xiaochuan,2013Publié par Beijing University of Aeronautics and Astronautics PressMATLABUn livre d'outilsMATLABExemples de livres d'enseignement,Oui.《MATLABRéseau neuronal30Études de cas》Modifié sur la base de、Complémentaire,Tiens bon.“Explication théorique—Analyse de cas—Extension de l'application”Cette caractéristique,Aide le lecteur à être plus intuitif、Apprendre les réseaux neuronaux de façon vivante.
《MATLABRéseau neuronal43Études de cas》Total43Chapitre,Le contenu couvre les réseaux neuronaux communs(BP、RBF、SOM、Hopfield、Elman、LVQ、Kohonen、GRNN、NARXAttendez.)Et algorithmes intelligents connexes(SVM、Arbre de décision、Forêt aléatoire、Machine d'apprentissage extrême, etc.).En même temps,Certains chapitres traitent également des algorithmes d'optimisation communs(Algorithmes génétiques、Algorithme de colonie de fourmis, etc.)Problèmes de combinaison avec les réseaux neuronaux.En outre,《MATLABRéseau neuronal43Études de cas》A également présentéMATLAB R2012bNouvelles fonctions et caractéristiques de la boîte à outils du réseau neuronal central,Comme le calcul parallèle du réseau neuronal、Réseau neuronal personnalisé、Programmation efficace des réseaux neuronaux, etc.
Avec l'essor de la recherche sur l'intelligence artificielle ces dernières années,Les réseaux neuronaux ont également connu une nouvelle vague de recherche,En raison de sa performance exceptionnelle dans le domaine du traitement des signaux,La méthode des réseaux neuronaux est également appliquée en profondeur dans diverses applications de la voix et de l'image,Cet article combine les cas du livre,La réalisation de la simulation,C'est aussi une sorte de réapprentissage,J'espère que vous pourrez garder vos connaissances,Renforcer et améliorer sa compréhension et sa pratique de l'application de la méthode des réseaux neuronaux dans divers domaines.J'ai commencé ce livre en attrapant plus de poissons,Voici un exemple de simulation,Principalement pour introduire l'exemple d'application du code source dans chaque chapitre,Cet article est principalement basé surMATLAB2018a(64Bits,MATLAB2015b La boîte à outils de traitement parallèle n'est pas installée )Réalisation de la simulation de plate - forme, Voici le Chapitre 42 de ce livre, opérations parallèles et exemples de réseaux neuronaux ,Pas grand - chose à dire,C'est parti.!
2. MATLAB Exemple de simulation I
Ouvre.MATLAB,Cliquez sur“Page d'accueil”,Cliquez sur“Ouvre.”,Exemple de fichier trouvé
Sélectionnerchapter42_1.m,Cliquez sur“Ouvre.”
chapter42_1.mLe code source est le suivant::
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Fonction:Opérations parallèles et réseaux neuronaux-Basé surCPU/GPUFonctionnement parallèle du réseau neuronal
%Environnement:Win7,Matlab2015b
%Modi: C.S
%Temps:2022-06-21
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% MatlabRéseau neuronal43Études de cas
% Opérations parallèles et réseaux neuronaux-Basé surCPU/GPUFonctionnement parallèle du réseau neuronal
% by Wang Xiaochuan(@Wang Xiaochuan_matlab)
% http://www.matlabsky.com
% Email:[email protected]163.com
% http://weibo.com/hgsz2003
% Le Code du script est un exemple de script de code , Il n'est pas recommandé de faire fonctionner l'ensemble , Attention aux notes d'exécution .
close all;
clear all
clc
tic
%% CPUParallèle
%% Processus de formation et de simulation de réseaux neuronaux à fil unique standard
[x,t]=house_dataset;
net1=feedforwardnet(10);
net2=train(net1,x,t);
y=sim(net2,x);
%% Ouvre.MATLAB workers
% matlabpool open
% VérifiezworkerNombre
delete(gcp('nocreate'))
poolsize=parpool(2)
%% ParamètrestrainAvecsimArguments en fonction“Useparallel”Pour“yes”.
net2=train(net1,x,t,'Useparallel','yes')
y=sim(net2,x,'Useparallel','yes');
%% Utiliser“showResources” L'option confirme que les opérations du réseau neuronal sont en fait différentes workerCours..
net2=train(net1,x,t,'useParallel','yes','showResources','yes');
y=sim(net2,x,'useParallel','yes','showResources','yes');
%% Diviser un ensemble de données au hasard , Enregistrer simultanément dans un fichier différent
CoreNum=2; % Configuration de la machine CPUNombre de carottes
if isempty(gcp('nocreate'))
parpool(CoreNum);
end
for i=1:2
x=rand(2,1000);
save(['inputs' num2str(i)],'x')
t=x(1,:).*x(2,:)+2*(x(1,:)+x(2,:)) ;
save(['target' num2str(i)],'t');
clear x t
end
%% Implémenter des opérations parallèles pour charger des ensembles de données
CoreNum=2; % Configuration de la machine CPUNombre de carottes
if isempty(gcp('nocreate'))
parpool(CoreNum);
end
for i=1:2
data=load(['inputs' num2str(i)],'x');
xc{
i}=data.x;
data=load(['target' num2str(i)],'t');
tc{
i}=data.t;
clear data
end
net2=configure(net2,xc{
1},tc{
1});
net2=train(net2,xc,tc);
yc=sim(net2,xc);
%% Obtenir chacunworkerRetour àCompositeRésultats
CoreNum=2; % Configuration de la machine CPUNombre de carottes
if isempty(gcp('nocreate'))
parpool(CoreNum);
end
for i=1:2
yi=yc{
i};
end
%% GPUParallèle
count=gpuDeviceCount
gpu1=gpuDevice(1)
gpuCores1=gpu1.MultiprocessorCount*gpu1.SIMDWidth
net2=train(net1,xc,tc,'useGPU','yes')
y=sim(net2,xc,'useGPU','yes')
net1.trainFcn='trainscg';
net2=train(net1,xc,tc,'useGPU','yes','showResources','yes');
y=sim(net2,xc, 'useGPU','yes','showResources','yes');
toc
Terminé.,Cliquez sur“Exécution”,Démarrer la simulation,Les résultats de la simulation de sortie sont les suivants:
Parallel pool using the 'local' profile is shutting down.
Starting parallel pool (parpool) using the 'local' profile ...
connected to 2 workers.
poolsize =
Pool - Propriétés:
Connected: true
NumWorkers: 2
Cluster: local
AttachedFiles: {
}
AutoAddClientPath: true
IdleTimeout: 30 minutes (30 minutes remaining)
SpmdEnabled: true
net2 =
Neural Network
name: 'Feed-Forward Neural Network'
userdata: (your custom info)
dimensions:
numInputs: 1
numLayers: 2
numOutputs: 1
numInputDelays: 0
numLayerDelays: 0
numFeedbackDelays: 0
numWeightElements: 151
sampleTime: 1
connections:
biasConnect: [1; 1]
inputConnect: [1; 0]
layerConnect: [0 0; 1 0]
outputConnect: [0 1]
subobjects:
input: Equivalent to inputs{
1}
output: Equivalent to outputs{
2}
inputs: {
1x1 cell array of 1 input}
layers: {
2x1 cell array of 2 layers}
outputs: {
1x2 cell array of 1 output}
biases: {
2x1 cell array of 2 biases}
inputWeights: {
2x1 cell array of 1 weight}
layerWeights: {
2x2 cell array of 1 weight}
functions:
adaptFcn: 'adaptwb'
adaptParam: (none)
derivFcn: 'defaultderiv'
divideFcn: 'dividerand'
divideParam: .trainRatio, .valRatio, .testRatio
divideMode: 'sample'
initFcn: 'initlay'
performFcn: 'mse'
performParam: .regularization, .normalization
plotFcns: {
'plotperform', plottrainstate, ploterrhist,
plotregression}
plotParams: {
1x4 cell array of 4 params}
trainFcn: 'trainlm'
trainParam: .showWindow, .showCommandLine, .show, .epochs,
.time, .goal, .min_grad, .max_fail, .mu, .mu_dec,
.mu_inc, .mu_max
weight and bias values:
IW: {
2x1 cell} containing 1 input weight matrix
LW: {
2x2 cell} containing 1 layer weight matrix
b: {
2x1 cell} containing 2 bias vectors
methods:
adapt: Learn while in continuous use
configure: Configure inputs & outputs
gensim: Generate Simulink model
init: Initialize weights & biases
perform: Calculate performance
sim: Evaluate network outputs given inputs
train: Train network with examples
view: View diagram
unconfigure: Unconfigure inputs & outputs
Computing Resources:
Parallel Workers:
Worker 1 on 123-PC, MEX on PCWIN64
Worker 2 on 123-PC, MEX on PCWIN64
Computing Resources:
Parallel Workers:
Worker 1 on 123-PC, MEX on PCWIN64
Worker 2 on 123-PC, MEX on PCWIN64
count =
2
gpu1 =
CUDADevice - Propriétés:
Name: 'GeForce GTX 960'
Index: 1
ComputeCapability: '5.2'
SupportsDouble: 1
DriverVersion: 10.2000
ToolkitVersion: 9
MaxThreadsPerBlock: 1024
MaxShmemPerBlock: 49152
MaxThreadBlockSize: [1024 1024 64]
MaxGridSize: [2.1475e+09 65535 65535]
SIMDWidth: 32
TotalMemory: 4.2950e+09
AvailableMemory: 3.2666e+09
MultiprocessorCount: 8
ClockRateKHz: 1266000
ComputeMode: 'Default'
GPUOverlapsTransfers: 1
KernelExecutionTimeout: 1
CanMapHostMemory: 1
DeviceSupported: 1
DeviceSelected: 1
gpuCores1 =
256
NOTICE: Jacobian training not supported on GPU. Training function set to TRAINSCG.
net2 =
Neural Network
name: 'Feed-Forward Neural Network'
userdata: (your custom info)
dimensions:
numInputs: 1
numLayers: 2
numOutputs: 1
numInputDelays: 0
numLayerDelays: 0
numFeedbackDelays: 0
numWeightElements: 41
sampleTime: 1
connections:
biasConnect: [1; 1]
inputConnect: [1; 0]
layerConnect: [0 0; 1 0]
outputConnect: [0 1]
subobjects:
input: Equivalent to inputs{
1}
output: Equivalent to outputs{
2}
inputs: {
1x1 cell array of 1 input}
layers: {
2x1 cell array of 2 layers}
outputs: {
1x2 cell array of 1 output}
biases: {
2x1 cell array of 2 biases}
inputWeights: {
2x1 cell array of 1 weight}
layerWeights: {
2x2 cell array of 1 weight}
functions:
adaptFcn: 'adaptwb'
adaptParam: (none)
derivFcn: 'defaultderiv'
divideFcn: 'dividerand'
divideParam: .trainRatio, .valRatio, .testRatio
divideMode: 'sample'
initFcn: 'initlay'
performFcn: 'mse'
performParam: .regularization, .normalization
plotFcns: {
'plotperform', plottrainstate, ploterrhist,
plotregression}
plotParams: {
1x4 cell array of 4 params}
trainFcn: 'trainscg'
trainParam: .showWindow, .showCommandLine, .show, .epochs,
.time, .goal, .min_grad, .max_fail, .sigma,
.lambda
weight and bias values:
IW: {
2x1 cell} containing 1 input weight matrix
LW: {
2x2 cell} containing 1 layer weight matrix
b: {
2x1 cell} containing 2 bias vectors
methods:
adapt: Learn while in continuous use
configure: Configure inputs & outputs
gensim: Generate Simulink model
init: Initialize weights & biases
perform: Calculate performance
sim: Evaluate network outputs given inputs
train: Train network with examples
view: View diagram
unconfigure: Unconfigure inputs & outputs
y =
1×2 cell Tableau
{
1×1000 double} {
1×1000 double}
Computing Resources:
GPU device #1, GeForce GTX 960
Computing Resources:
GPU device #1, GeForce GTX 960
Le temps est écoulé. 70.246120 Secondes.

Cliquez à tour de rôlePlotsDansPerformance,Training State,Error Histogram,Regression La figure suivante est disponible :




3. MATLAB Exemple de simulation II
Sélectionnez et ouvrezMATLAB Dans la vue actuelle du dossier chapter42_2.m,
chapter42_2.mLe code source est le suivant::
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Fonction:Opérations parallèles et réseaux neuronaux-Basé surCPU/GPUFonctionnement parallèle du réseau neuronal
%Environnement:Win7,Matlab2015b
%Modi: C.S
%Temps:2022-06-21
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% MatlabRéseau neuronal43Études de cas
% Opérations parallèles et réseaux neuronaux-Basé surCPU/GPUFonctionnement parallèle du réseau neuronal
% by Wang Xiaochuan(@Wang Xiaochuan_matlab)
% http://www.matlabsky.com
% Email:[email protected]163.com
% http://weibo.com/hgsz2003
%% Vider les variables d'environnement
clear all
clc
warning off
tic
%% Ouvre.matlabpool
% matlabpool open
delete(gcp('nocreate'))
poolsize=parpool(2)
%% Chargement des données
load bodyfat_dataset
inputs = bodyfatInputs;
targets = bodyfatTargets;
%% Créer un réseau neuronal d'ajustement
hiddenLayerSize = 10; % Le nombre de neurones de la couche cachée est10
net = fitnet(hiddenLayerSize); % Créer un réseau
%% Spécifiez les fonctions de traitement des entrées et des sorties ( Cette opération n'est pas nécessaire )
net.inputs{
1}.processFcns = {
'removeconstantrows','mapminmax'};
net.outputs{
2}.processFcns = {
'removeconstantrows','mapminmax'};
%% Formation à la mise en place de réseaux neuronaux 、Validation、 Partition de l'ensemble de données d'essai
net.divideFcn = 'dividerand'; % Diviser les ensembles de données au hasard
net.divideMode = 'sample'; % Les unités sont divisées en chaque donnée
net.divideParam.trainRatio = 70/100; %Échelle de l'ensemble d'entraînement
net.divideParam.valRatio = 15/100; %Vérifier l'échelle de l'ensemble
net.divideParam.testRatio = 15/100; %Échelle de l'ensemble d'essai
%% Définir les fonctions de formation du réseau
net.trainFcn = 'trainlm'; % Levenberg-Marquardt
%% Définir la fonction d'erreur du réseau
net.performFcn = 'mse'; % Mean squared error
%% Définir les fonctions de visualisation du réseau
net.plotFcns = {
'plotperform','plottrainstate','ploterrhist', ...
'plotregression', 'plotfit'};
%% Formation en réseau à fil unique
tic
[net1,tr1] = train(net,inputs,targets);
t1=toc;
disp([' Le temps d'entraînement du réseau neuronal monothreadé est ',num2str(t1),'Secondes']);
%% Formation en réseau parallèle
tic
[net2,tr2] = train(net,inputs,targets,'useParallel','yes','showResources','yes');
t2=toc;
disp([' Le temps d'entraînement du réseau neuronal parallèle est ',num2str(t2),'Secondes']);
%% Validation des effets du réseau
outputs1 = sim(net1,inputs);
outputs2 = sim(net2,inputs);
errors1 = gsubtract(targets,outputs1);
errors2 = gsubtract(targets,outputs2);
performance1 = perform(net1,targets,outputs1);
performance2 = perform(net2,targets,outputs2);
%% Visualisation du réseau neuronal
figure, plotperform(tr1);
figure, plotperform(tr2);
figure, plottrainstate(tr1);
figure, plottrainstate(tr2);
figure,plotregression(targets,outputs1);
figure,plotregression(targets,outputs2);
figure,ploterrhist(errors1);
figure,ploterrhist(errors2);
toc
% matlabpool close
Cliquez sur“Exécution”,Démarrer la simulation,Les résultats de la simulation de sortie sont les suivants:
Parallel pool using the 'local' profile is shutting down.
Starting parallel pool (parpool) using the 'local' profile ...
connected to 2 workers.
poolsize =
Pool - Propriétés:
Connected: true
NumWorkers: 2
Cluster: local
AttachedFiles: {
}
AutoAddClientPath: true
IdleTimeout: 30 minutes (30 minutes remaining)
SpmdEnabled: true
Le temps d'entraînement du réseau neuronal monothreadé est 1.9707Secondes
Computing Resources:
Parallel Workers:
Worker 1 on 123-PC, MEX on PCWIN64
Worker 2 on 123-PC, MEX on PCWIN64
Le temps d'entraînement du réseau neuronal parallèle est 4.4909Secondes
performance1 =
26.4750
performance2 =
50.1747
Le temps est écoulé. 12.766995 Secondes.









4. Résumé
Calcul parallèle des fonctions de corrélation et des appels de données à MATLAB2015 Mise à jour après la version , Il faut donc ajuster le code source avant la simulation , Les exemples de cet article sont basés sur l'état de la machine et MATLABVersion adaptée.Intéressé par le contenu de ce chapitre ou désireux d'en apprendre davantage, Il est recommandé d'étudier le Chapitre 42 du livre .Certains de ces points de connaissance seront complétés ultérieurement sur la base de leur propre compréhension,Bienvenue à apprendre et à communiquer ensemble.
边栏推荐
- ORA-01547、ORA-01194、ORA-01110
- C # joint halcon out of halcon Environment and various Error Reporting and Resolution Experiences
- 创业了...
- JS introduction < 1 >
- Global and Chinese market of X-ray detectors 2022-2028: Research Report on technology, participants, trends, market size and share
- [数据库]JDBC
- 汇率的查询接口
- h5中的页面显示隐藏执行事件
- [HCIA continuous update] working principle of OSPF Protocol
- Qualcomm platform wifi-- WPA_ supplicant issue
猜你喜欢

MySQL advanced (Advanced) SQL statement (II)

uniapp 使用canvas 生成海报并保存到本地

Delphi xe10.4 installing alphacontrols15.12

verilog 并行块实现

Verilog parallel block implementation

A list of job levels and salaries in common Internet companies. Those who have conditions must enter big factories. The salary is really high

Large screen visualization from bronze to the advanced king, you only need a "component reuse"!

MySQL connection query and subquery

Retrofit's callback hell is really vulnerable in kotlin synergy mode
![[C Advanced] brother Peng takes you to play with strings and memory functions](/img/95/ab1bb0b3fa0b99e32233a5ca5d42a4.jpg)
[C Advanced] brother Peng takes you to play with strings and memory functions
随机推荐
Comment élaborer une stratégie nuageuse à l'ère des nuages mixtes
Grpc快速实践
Verilog state machine
ORA-01547、ORA-01194、ORA-01110
Generate random numbers that obey normal distribution
GB/T-2423. XX environmental test documents, including the latest documents
高并发场景下缓存处理方案
MySQL advanced (Advanced) SQL statement (II)
Detailed explanation of ThreadLocal
/silicosis/geo/GSE184854_scRNA-seq_mouse_lung_ccr2/GSE184854_RAW/GSM5598265_matrix_inflection_demult
PY3, PIP appears when installing the library, warning: ignoring invalid distribution -ip
What is hybrid web containers for SAP ui5
Work hard all day long and be alert at sunset
Xiaomi, a young engineer, was just going to make soy sauce
[JS reverse series] analysis of a customs publicity platform
JS introduction < 1 >
Download and use of the super perfect screenshot tool snipaste
[C Advanced] brother Peng takes you to play with strings and memory functions
js生成随机数
Common means of modeling: aggregation