Hi,
Я пытаюсь создать собственный промежуточный слой, который может разделить данные. Когда я использую checkLayer для проверки функциональности, он выдает ошибку: «Неверное количество выходных аргументов для «предсказания» в слое splitDataLayer. Ожидалось, что будет 1, а вместо этого 4». хотя я установил количество выходов на 4 в конструкторе.
classdef splitDataLayer < nnet.layer.Layer methods function obj = splitDataLayer(name) obj.Name = name; obj.numOutputs = 4; obj.OutputNames = {'out1','out2','out3','out4'}; end function [Z1, Z2, Z3, Z4] = predict(~, X) Z1 = X(1, :, :, :); Z2 = X(2, :, :, :); Z3 = X(3, :, :, :); Z4 = X(4, :, :, :); end function [dLdX] = backward(~,~,~,~,~,~,dLdZ1,dLdZ2,dLdZ3,dLdZ4,~) dLdX = cat(1, dLdZ1,... dLdZ2,... dLdZ3,... dLdZ4); end end end
Как видно выше, как количество выходов, так и выходная матрица в функции прогнозирования были установлены правильно. Поэтому я не знаю, что может быть не так с кодом и вызвать эту ошибку.
ОТВЕЧАТЬ
Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.
Пользовательские слои с несколькими входами и выходами поддерживаются начиная с R2019a. Из вашего сообщения об ошибке я подозреваю, что вы используете более старую версию.
Однако ваш слой выглядит хорошо, за исключением obj.numOutputs = 4; который должен быть obj.NumOutputs = 4;
Когда я исправляю это, все тесты checkLayer проходят в R2019a:
layer = splitDataLayer('test'); validInputSize = [4 5 20 4]; % Some arbitrary dimensions checkLayer(layer,validInputSize,'ObservationDimension',4) Running nnet.checklayer.TestCase .......... .......... .... Done nnet.checklayer.TestCase __________ Test Summary: 24 Passed, 0 Failed, 0 Incomplete, 0 Skipped. Time elapsed: 1.3818 seconds.