我試圖構建一個類框架在Matlab神經網絡(ANN)通過定義一個Node類:定義Matlab的類具有另一個類的屬性
function NodeObject = Node(Input, Weights, Activation)
Features.Input = [];
Features.Weights = [];
Features.Activation = [];
Features.Input = Input;
Features.Weights = Weights;
Features.Activation = Activation;
NodeObject = class(Features, 'Node');
如果這裏輸入的是一個整數(預期的輸入數量),權重是長度爲Features.Input
的向量,並且Features.Activation
是引用存儲在方法中的激活函數的字符串。
我想下一步要做什麼是構造節點的單元陣列,並定義基於此陣列的網絡類:
function Architecture = Network(NodeArray)
ANN.Layers = []; % Number of layers in architecture
ANN.LayerWidths = []; % Vector of length ANN.Layers containing width of each layer
ANN.NodeArray = []; % Original input is cell array with layers in ascending order (input at top, output at bottom) with nodes in each row.
ANN.InputSizes = [];
% Find number of layers
ANN.Layers = length(NodeArray(:,1));
% Find width of each layer
Widths = zeros(ANN.Layers,1);
for i = 1:length(Widths)
Widths(i) = length(NodeArray(:,i));
end
ANN.LayerWidths = Widths;
% Pass NodeArray to Network class
ANN.NodeArray = NodeArray;
% Construct cell of input sizes
InputSizes = [];
for i = 1:ANN.Layers
for j = 1:Widths(i)
InputSizes(i,j) = NodeArray{i,j}.Inputs;
end
end
ANN.InputSizes = InputSizes;
Architecture = class(ANN, 'Network');
屬性ANN.InputSizes
嘗試提取從Node
對象的屬性,但我的代碼不允許我這樣做。我該如何修改這個問題,或者你是否一併推薦了一個不同的體系結構來解決這個問題?目前我的課程Node
和Network
包含在兩個獨立的目錄中,但我有一種感覺,我還沒有看到其他的東西。作爲參考,我在OOP方面絕對沒有任何經驗,從我所收集到的看來,Matlab並不是實現這些結構的最佳環境。目前,雖然我沒有足夠的經驗來用另一種語言來實現這種類型的框架。
使用'classdef'格式來定義類可能更容易。 – Suever
@Suever我曾嘗試使用保存在「@ Network」目錄中的'classdef'格式來定義'Node2'類,但'Network'定義無法識別它。這個問題的一部分是我如何定義我的類,但其中的一部分也可能是我如何鏈接我的目錄。 – Mnifldz
@Folder必須與類具有相同的名稱,所以它需要是「@ Node2」。但是用'classdef'定義,根本不需要'@ Folder'。 – Suever