Red neuronal de Matlab (1) Red BP

Empecé a aprender redes neuronales recientemente, y siento que no es un problema ponerse en contacto con una comprensión superficial al principio, pero la comprensión profunda aún necesita práctica continua. BP es una operación de avance, pero el error se puede retroalimentar; de acuerdo con el método de descenso de gradiente para ajustar continuamente el peso (fácil de caer en un mínimo local), hasta que los datos finales puedan satisfacer la demanda; puede ver la función newff Uso matlab explica newff (red de retropropagación y feedforward)_xiaotao_1's blog-CSDN blog_matlab newffz

Siento que esta explicación es muy buena y necesito entender los parámetros internos;

Método de escritura Matlab de la red neuronal BP:

1. Importar datos (importar datos .mat, importar con función de carga)

2. Genere aleatoriamente un conjunto de entrenamiento y un conjunto de prueba (utilice la función randperm para codificar el orden de los datos y luego divida el total de datos en un conjunto de entrenamiento y un conjunto de prueba)

3. Normalización de datos (use la función mapminmax para la normalización de datos, mapminmax('apply',n,x), n son los datos de prueba, x es la característica de datos del conjunto de entrenamiento)

4. Crear una red neuronal BP (función newff, newff(p_train,t_train,9), 9 es el número de capas ocultas)

5. Establecer parámetros de entrenamiento

6. Entrene la red (utilice la función de entrenamiento para entrenar)

7. Prueba de simulación (prueba de simulación con función sim)

8. Desnormalización de datos (mapminmax('reverse', t_sim, ps_output) para desnormalización)

Luego realice una evaluación de desempeño

9. Error relativo

10. Coeficiente de determinación

11. Comparación de resultados

Entonces puedes realizar la operación.

% 1. 导入数据
load spectra_data.mat%用load函数

% 2. 随机产生训练集和测试集
temp = randperm(size(NIR,1));%randperm函数为打乱总体数据的顺序
% 训练集——50个样本
P_train = NIR(temp(1:50),:)';%根据newff函数里面的参数要求,所以要让训练集和测试集的输入数据和输出数据的列相同,所以用’
T_train = octane(temp(1:50),:)';%因为要让训练集和测试集的输入数据和输出数据的列相同,所以用’
% 测试集——10个样本
P_test = NIR(temp(51:end),:)';
T_test = octane(temp(51:end),:)';
N = size(P_test,2);

%% III. 数据归一化
[p_train, ps_input] = mapminmax(P_train,0,1);%用mapminmax函数进行归一化
p_test = mapminmax('apply',P_test,ps_input);%用P_train归一化得到的数据特征将P_test的数据进行相同性质的归一化;

[t_train, ps_output] = mapminmax(T_train,0,1);%对训练集的输出数据进行归一化

%% IV. BP神经网络创建、训练及仿真测试
% 1. 创建网络
net = newff(p_train,t_train,9);%创建BP网络

% 2. 设置训练参数
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-3;
net.trainParam.lr = 0.01;

% 3. 训练网络
net = train(net,p_train,t_train);

% 4. 仿真测试
t_sim = sim(net,p_test);%用sim函数进行仿真测试

% 5. 数据反归一化
T_sim = mapminmax('reverse',t_sim,ps_output);%ps_output是T_train的归一化数据特征

Ventajas y desventajas de la red neuronal BP:

ventaja:

1. Autoaprendizaje y capacidad de adaptación

2. Capacidad de mapeo no lineal

3. Tener cierta tolerancia a fallas

4. Aplicar los resultados del aprendizaje a nuevos conocimientos

defecto:

1. Fácil de caer en el mínimo local

2. La velocidad de convergencia del algoritmo es lenta

3. La elección de la estructura de la red, si es demasiado grande, es fácil sobreajustarse, y si es demasiado pequeña, es fácil que no converja

4. Demasiada confianza en muestras típicas, lo que requiere una gran cantidad de muestras típicas

Supongo que te gusta

Origin blog.csdn.net/new_EAGLE/article/details/125927128
Recomendado
Clasificación