WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Implementierung Custom DeepLearning Layer

 

paslow26
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 27.04.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2020, 10:27     Titel: Implementierung Custom DeepLearning Layer
  Antworten mit Zitat      
Hallo zusammen,

Ich hoffe hier finde ich jemanden, der mir bzgl. der Erstellung eines Custom DeepLearning Layers weiterhelfen kann.

Ich bin dabei, ein CNN für ein Regressionsproblem (Bildverarbeitung) zu entwerfen. In der Netzstruktur brauche ich einen Layer, der mir Features der Größe 1x1x1xNumObservations beliebig oft in vertikaler und horizontaler Bildrichtung wiederholt.
Die grobe Layerstruktur steht, und die Funktion checkLayer() gibt mir folgenden Code aus:

Code:
checkLayer(ans,[1 1 1 64],'ObservationDim',4)
Running nnet.checklayer.TestLayerWithoutBackward
.......... .......
Done nnet.checklayer.TestLayerWithoutBackward
__________

Test Summary:
    17 Passed, 0 Failed, 0 Incomplete, 0 Skipped.
    Time elapsed: 40.8911 seconds.


Sobald ich den Layer aber erstelle und im DeepNetworkDesigner in ein Netz einbinden möchte, bekomme ich einen Freeze und muss Matlab neustarten.

Es ist zu erwähnen, dass der Layer keine "Learnables" hat. Weiterhin beinhaltet die predict Funktion nur Funktionen, die für dlarrays implementiert sind. Somit sollte sich die Angabe der backward Funktion erübrigen. Nachfolgend der Code meines Layers:

Code:
classdef FeatureReplicationLayer < nnet.layer.Layer

    % Set additional properties (that are not included in the default layer properties)
    properties
        numChannels
        ReplicationHeight
        ReplicationWidth
   end
   
    methods
        function layer = FeatureReplicationLayer(numChannels,repheight,repwidth,name)

            % Set number of channels.
            layer.numChannels = numChannels;
           
            % Set Replication Height
            layer.ReplicationWidth = repwidth;
           
            % Set Replication Wifth
            layer.ReplicationHeight = repheight;
           
            % Set layer description.
            layer.Description = 'Replication of Features along Width- and Height- dimension';
           
            % Set layer type.
            layer.Type = 'Replication Layer';
       
            % Set layer name.
            layer.Name = name;
       
        end
       
        % Forward pass through the layer
        function [valout] = predict(layer, valin)
           
            % Get replication height
            repheight = layer.ReplicationHeight;
            % Get replication width
            repwidth = layer.ReplicationWidth;
            % Get Feature Map Input Height
            hgtin = size(valin,1);
            % Get Feature Map Input Width
            wdtin = size(valin,2);
            % Get feature Map Channel Depth (should usually be 1)
            chlin = size(valin,3);
            % Get Feature Map Observation Depth
            obsin = size(valin,4);
            % Initialize Output
            valout = zeros(ceil(repheight/hgtin)*hgtin,ceil(repwidth/wdtin)*wdtin,chlin,obsin,'like',valin);

            % Loop over replication height, replication width and channels
            for u = 1:hgtin:repheight
                for v = 1:wdtin:repwidth
                    for c = 1:chlin
                        % Assign input feature map across repheight and repwidth
                        valout( u:((u + hgtin)-1)  , v:((v + wdtin)-1) , c , : ) = valin(:,:,c,1:obsin);
                    end
                end
            end
            % Check validity of stepsizes
            if ((rem(hgtin,2) ~= 0) && (hgtin ~= 1)) || ((rem(wdtin,2) ~= 0) && (wdtin ~= 1))
                fprintf('\nSize Mismatch: The Height and Width of the input must be 1, 2, 4, 8, 16, ...\nThe Output Feature Map will be cropped to fit the input size.\n\n');
                valout = valout(1:repheight,1:repwidth,1:size(valin,3),1:obsin);
            end
        end
    end
end


Ich verwende Matlab 2019b und habe alle notwendigen Toolboxen installiert.
Ich bin über jegliche Hilfe dankbar.

Gruß
paslow26
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.04.2020, 10:57     Titel:
  Antworten mit Zitat      
Hallo,

wie wurde ans für den checkLayer-Aufruf erzeugt?

Ein Freeze klingt nach einem Fall für den Technischen Support von MathWorks.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
paslow26
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 27.04.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2020, 11:03     Titel:
  Antworten mit Zitat      
Hallo Harald,

ans wurde so erzeugt:

Code:
ans = FeatureReplicationLayer(64,128,256,'FRL')

ans =

  FeatureReplicationLayer with properties:

                 Name: 'FRL'
          numChannels: 64
    ReplicationHeight: 128
     ReplicationWidth: 256

  Show all properties


Gruß
paslow26
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.04.2020, 16:22     Titel:
  Antworten mit Zitat      
Hallo,

danke für die Klärung.
Bei dem eigentlichen Problem kann ich dir aber leider nicht weiterhelfen, daher wie gesagt:
Zitat:
Ein Freeze klingt nach einem Fall für den Technischen Support von MathWorks.


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.