| function batch_training_performance=fun_ANN_Model(image,param) |
| |
| |
| nmb_of_hidden_layers=param.nmb_of_hidden_layers; |
|
|
| patch=param.patch; |
| nmb_of_modules=param.nmb_of_modules; |
| nmb_of_module_subsets=param.nmb_of_module_subsets; |
| nmb_of_colors=param.nmb_of_colors; |
| channels_names=param.channels_names; |
| |
| nmb_of_labs_per_module=param.nmb_of_labs_per_module; |
| sz=size(image); |
| if length(sz)==2 |
| nmb_of_data=1; |
| else |
| nmb_of_data=sz(2); |
| end |
|
|
| if nmb_of_data>1 |
| batch_training_performance=zeros(2,nmb_of_data,nmb_of_modules,nmb_of_module_subsets,nmb_of_colors); |
| else |
| batch_training_performance=zeros(2,nmb_of_modules,nmb_of_module_subsets,nmb_of_colors); |
| end |
| for module=1:nmb_of_modules |
| for subset=1:nmb_of_module_subsets |
| 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))); |
| |
| temp_load=load(reportname1); |
| W=temp_load.W; |
| b=temp_load.b; |
| |
| |
| W1=W.LayerName1; |
| W2=W.LayerName2; |
| b1=b.LayerName1; |
| b2=b.LayerName2; |
|
|
| if nmb_of_data>1 |
| a_0=image(:,:,color); |
| else |
| a_0=image(:,color); |
| end |
| 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); |
| abs_label=prediction.label+(module-1)*nmb_of_labs_per_module; |
| if nmb_of_data>1 |
| batch_training_performance(:,:,module,subset,color)=[abs_label;prediction.distance]; |
| else |
| batch_training_performance(:,module,subset,color)=[abs_label;prediction.distance]; |
| end |
| end |
| end |
| end |
| if nmb_of_data>1 |
| batch_training_performance=permute(batch_training_performance,[1,3,4,5,2]); |
| end |
| end |