我在做一个关于用BP神经网络给高光谱图像分类的算法,一个像素有220个光谱数据,每个像素对应了一类,已知的是一共有17类,现在我将每类数据都找到,并在其中选出训练集和测试集。训练集对应的输出就是类别号,如1,2,3,4等。训练好网络之后我将类别1的测试集带入到网络中,计算出的输出却和1相差甚远。下面附上图和源代码,麻烦各路大神帮忙看看,本人也是刚接触这方面的知识。
clc;
clear all;
close all;
%1.导入数据
load('C:\Users\胡磊\Desktop\Indian_pines.mat')
load('C:\Users\胡磊\Desktop\Indian_pines_gt.mat')
%将145*145*220的3维数据变为2维矩阵
x = reshape(indian_pines,145*145,220);
y = reshape(indian_pines_gt,145*145,1);
%将所有的分类找到,并分出训练集与测试集
%A1代表了类别为1的所在的行,B1代表了第1类所对应的波段
A1 = find(y == 1);
B1 = x(A1,:);
%A2代表了类别为2的所在的行,B2代表了第2类所对应的波段
A2 = find(y==2);
B2 = x(A2,:);
%A3代表了类别为3的所在的行,B3代表了第3类所对应的波段
A3 = find(y == 3);
B3 = x(A3,:);
%A4代表了类别为4的所在的行,B4代表了第4类所对应的波段
A4 = find(y == 4);
B4 = x(A4,:);
%A5代表了类别为5的所在的行,B5代表了第5类所对应的波段
A5 = find(y == 5);
B5 = x(A5