I am attempting to declutter my MATLAB app code by separating some of the initialization into separate .m files. For this I have set up various files for each type of component (e.g. a file for buttons, graph, etc.). I am attempting to access a function in my master initialize file from the file for buttons. My code goes as follows in the buttons .m file goes as follow: classdef buttons < handle methods %initializes the UI function buttonCreate(app) %Create file load 1 app.fileload1 = uibutton(app.gridLayout, 'push'); app.fileload1.FontSize = 36; app.fileload1.Layout.Row = [8 9]; app.fileload1.Layout.Column = 1; app.fileload1.Text = 'Load 1'; %proceeds to create the rest of the buttons end end end Now I attempt to access the buttonCreate() function in my master initialize file initialize.m : classdef initialize < handle prop
i am using Matlab for medical image classification and i get this issue:
note: i used pre-trained network (alexnet) with .dicom files dataset.
first i prepare my design network
second, i run my code.
>> deepNetworkDesigner >> SHIVANCLASSIFY net = SeriesNetwork with properties: Layers: [25×1 nnet.cnn.layer.Layer] InputNames: {'data'} OutputNames: {'output'} Error using trainNetwork (line 170) The training images are of size 227x227x1 but the input layer expects images of size 227x227x3. Error in SHIVANCLASSIFY (line 36) net = trainNetwork(augimdsTrain,layers_1,options)
net=alexnet imds = imageDatastore('lung dataset-Labeled', ... 'IncludeSubfolders',true, 'LabelSource','foldernames', ... % this for labeling by folder names 'FileExtensions','.dcm','ReadFcn',@readDicomDatastoreImage); % this a function [imdsTrain,imdsValidation] = splitEachLabel(imds,0.7); augmenter = imageDataAugmenter( ... 'RandRotation',[-20,20], ... 'RandXReflection',1,... 'RandYReflection',1,... 'RandXTranslation',[-3 3], ... 'RandYTranslation',[-3 3]); %augimdsTrain = augmentedImageDatastore([224 224],imdsTrain,'DataAugmentation',augmenter); %augimdsValidation = augmentedImageDatastore([224 224],imdsValidation,'DataAugmentation',augmenter); augimdsTrain = augmentedImageDatastore([227 227],imdsTrain); augimdsValidation = augmentedImageDatastore([227 227],imdsValidation); options = trainingOptions('rmsprop', ... 'MiniBatchSize',10, ... 'MaxEpochs',20, ... 'InitialLearnRate',1e-3, ... 'Shuffle','every-epoch', ... 'ValidationData',augimdsValidation, ... 'ValidationFrequency',3, ... 'Verbose',false, ... 'Plots','training-progress'); net = trainNetwork(augimdsTrain,layers_1,options) [YPred, probs] = classify(net,augimdsValidation); accuracy = mean(YPred ==imdsValidation.Labels) figure cm=confusionchart (imdsValidation.Labels, YPred);
ANSWER
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
you cannot use pre-trained network unless you adjust it to your data1. for alexnet, this pre-trained network takes 227x227x3 because it deals with RGB images2. and that also applies to the first ConveNet which takes 3 channels because its kernels have 3 channels, in which you also have to update3. you must update the last three classification layers to classify based on your classes i also think that you are trying to resize your lung dataset to 227x227 in which you may lose some of its quality this code should work for you, and if it's not clear i can clarify it for you clear all; close all; clc;
imds = imageDatastore('lung dataset-Labeled', ...
'IncludeSubfolders',true, 'LabelSource','foldernames', ... % this for labeling by folder names
'FileExtensions','.dcm','ReadFcn',@readDicomDatastoreImage); % this a function
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.7);
net = alexnet(); % analyzeNetwork(lgraph)
numClasses = numel(categories(imdsTrain.Labels)); % number of classes = number of folders
imageSize = [227 227]; % you can use here the original dataset size
global GinputSize
GinputSize = imageSize;
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
you cannot use pre-trained network unless you adjust it to your data
1. for alexnet, this pre-trained network takes 227x227x3 because it deals with RGB images
2. and that also applies to the first ConveNet which takes 3 channels because its kernels have 3 channels, in which you also have to update
3. you must update the last three classification layers to classify based on your classes
i also think that you are trying to resize your lung dataset to 227x227 in which you may lose some of its quality
this code should work for you, and if it's not clear i can clarify it for you
clear all; close all; clc; imds = imageDatastore('lung dataset-Labeled', ... 'IncludeSubfolders',true, 'LabelSource','foldernames', ... % this for labeling by folder names 'FileExtensions','.dcm','ReadFcn',@readDicomDatastoreImage); % this a function [imdsTrain,imdsValidation] = splitEachLabel(imds,0.7); net = alexnet(); % analyzeNetwork(lgraph) numClasses = numel(categories(imdsTrain.Labels)); % number of classes = number of folders imageSize = [227 227]; % you can use here the original dataset size global GinputSize GinputSize = imageSize;
SEE COMPLETE ANSWER CLICK THE LINK
Comments
Post a Comment