File size: 3,707 Bytes
dc3cf7f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
function out=fun_training_evaulation(model,nmb_of_hidden_layers)
%
%
nmb_of_modules=40;
nmb_of_module_subsets=2;

channels_names={'R','G','B','RGg1','RBg1','GBg1','RGg2','RBg2','GBg2','RB','RG','GB','eRGB','BW','X','Y','Z'};
% feature_RGB=[1 0 0
%     0      1      0
%     0      0      1
%     0.618  0.382  0
%     0.618  0      0.382
%     0      0.618  0.382
%     0.382  0.618  0
%     0.382  0      0.618
%     0      0.382  0.618
%     0.5    0.5    0
%     0.5    0      0.5
%     0      0.5    0.5
%     1/3    1/3    1/3
%     0.299  0.587  0.114
%     0.4125 0.3576  0.1804
%     0.2126 0.7152  0.0722
%     0.0193 0.1192  0.9502];

nmb_of_colors=length(channels_names);
patch=0;
nmb_of_labs_per_module=25;

pstvrt_model=zeros(nmb_of_colors,nmb_of_modules,nmb_of_module_subsets);
%%
parfor module=1:nmb_of_modules
    %     pm=param;
    channels_names={'R','G','B','RGg1','RBg1','GBg1','RGg2','RBg2','GBg2','RB','RG','GB','eRGB','BW','X','Y','Z'};
    for subset=1:nmb_of_module_subsets
        reportname1 = sprintf('../../Data_Transformation/Transformed_IN1k_Data/Transformed_Data_for_SGD/train_data_patch_%d_module_%d_subset_%d_for_%d_labels_per_module.mat', ...
            patch,module,subset,nmb_of_labs_per_module);
        data_load=load(reportname1);
        % %         reportname1 = sprintf('../%s.mat',model);
        % %         temp_load=load(reportname1);
        % %         model_parameter=temp_load.model_parameters;
        for color=1:nmb_of_colors
            reportname1 = sprintf('../Model_Parameter/Trained_Parameter_patch_%d_module_%d_subset_%d_ch_%s.mat',...
                patch, module, subset, char(channels_names(color)));
            %      str=struct('W', W, 'b', b);
            temp_load=load(reportname1);
            W=temp_load.W;
            b=temp_load.b;
            % Assign the trained parameters
            %
            W1=W.LayerName1;
            W2=W.LayerName2;
            b1=b.LayerName1;
            b2=b.LayerName2;
            % %                 W1=model_parameter.W1(:,:,color,subset,module);
            % %                 W2=model_parameter.W2(:,:,color,subset,module);
            % %                 b1=model_parameter.b1(:,:,color,subset,module);
            % %                 b2=model_parameter.b2(:,:,color,subset,module);
            a_0=data_load.data(:,:,color);
            true_label=data_load.labels;
            dtsz=length(true_label);
            nmb_of_labels=length(b2);
            z1=W1*a_0+b1;
            [a1,~]=fun_activation(z1);
            z2=W2*a1+b2;

            if nmb_of_hidden_layers==1
                [a2,~]=fun_softmax(z2);
                predicted_vector=a2;
            else
                W3=W.LayerName3;
                b3=b.LayerName3;
                nmb_of_labels=length(b3);
                [a2,~]=fun_activation(z2);

                z3=W3*a2+b3;
                [a3,~]=fun_softmax(z3);
                predicted_vector=a3;
            end
            prediction=fun_predicted_vector_2_label(predicted_vector,nmb_of_labels);
            %%
            % Compute the error and positive rates.
            %
            v=abs(true_label-prediction.label);
            errt=sum(1.*(v>0))/dtsz;
            pstvrt=(1-errt)*100;
            pstvrt_model(color,module,subset)=pstvrt;
            aa=(module-1)*nmb_of_labs_per_module; %data_load.label_table(2,1)-1;
            training_performance=[true_label+aa;prediction.label+aa;prediction.distance];
            out=fun_save_result(model,patch, module, subset,color,channels_names,training_performance);
        end
    end
    module
end
reportname1 = sprintf('%s_1_performance.mat',model);
save(reportname1, 'pstvrt_model');
out=[];
end