Sequence CNN with different input and output size
3 次查看(过去 30 天)
显示 更早的评论
I'm trying to train a Regression Sequence CNN with the following properties:
- All training input sequences have length L
- All training output sequences have length LOut with LOut <= L
By default MATLAB requires that L = LOut and the training is really good when L=LOut. Then I was trying to fix the case LOut<L by filling the output sequence of training with zeros but the training does not converge. Then I was trying to construct a Custom Regression Layer where the loss function only considers the values between 1 to LOut but again there's no training convergence. Then I tried to construct a Custom Fully Connected Layer but the Checking Layer Process fails, I think that the Checking process fails because matlab does 2 checking stages where the size of the sequence input varies between 1 and 3 (I checked it with the debugger) and since the learnable weights have a fixed sice the Checking process fails in the multiplication and sum operations .
Any sugestion?
Adjoint the predict function of each Custom layer:
Regression Layer
function loss = forwardLoss(layer, Y, T)
LOut_ = layer.LOut;
meanAbsoluteError = sum(abs(Y(:,:,1:LOut_)-T(:,:,1:LOut_,R)),3)/LOut_;
% Take mean over mini-batch.
N = size(Y,4);
loss = sum(meanAbsoluteError)/N;
end
Fully Connected Layer
function [Z] = predict(layer,X)
[l,m,n]=size(X); %m is ne number of features and n is the length of the sequences. l is usually the minibatch size.
mBS = size(X,2);
LOut_ = layer.LOut;
W_=layer.W;
b_= layer.b;
Z = zeros(l,m,LOut_);
for i = 1:l
Z(i,:,:) = (W_*squeeze(X(i,:,:))'+b_)';
end
end
0 个评论
回答(1 个)
Raynier Suresh
2021-2-19
Hi, You can try an encoder decoder model to achieve this. The below example explains you about how to set an encoder decoder model for sequence to sequence translation.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Data Workflows 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!