How to convert the format of data from sequences to matrices when designing deep learning networks?
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello,
After importing the network into DeepNetworkDesigner for analysis, I encountered the following problem: after being processed by selfattentionLayer, the data size format is 577 (S) x 577 (C) x 1 (B).
I want to convert it to a format similar to imageInputLayer, _ (S) x_ (S) x_ (C) x_ (B). How can I use MATLAB to implement it?
The code for the network is as follows:
patchSize = 16;
embeddingOutputSize = 768;
layer = patchEmbeddingLayer(patchSize,embeddingOutputSize)
net = dlnetwork;
inputSize = [384 384 3];
maxPosition = (inputSize(1)/patchSize)^2 + 1;
numHeads = 4;
numKeyChannels = 4*embeddingOutputSize;
numClasses = 1000;
layers = [
imageInputLayer(inputSize)
patchEmbeddingLayer(patchSize,embeddingOutputSize,Name="patch-emb")
embeddingConcatenationLayer(Name="emb-cat")
positionEmbeddingLayer(embeddingOutputSize,maxPosition,Name="pos-emb");
additionLayer(2,Name="add")
selfAttentionLayer(numHeads,numKeyChannels,AttentionMask="causal",OutputSize=maxPosition)
fullyConnectedLayer(numClasses)
softmaxLayer];
net = addLayers(net,layers);
net = connectLayers(net,"emb-cat","add/in2");
댓글 수: 4
답변 (1개)
Gayathri
2024년 9월 16일
I understand that you want to convert a ‘SCB’ formatted output to ‘SSCB’ formatted output. It can be achieved as shown below.
X = dlarray(rand(577,577),'SCB');
out = X(2:end, :, :);
WH = sqrt(size(out, 1)); % Calculate the spatial dimensions
C = size(out, 2); % Number of channels
D=size(out,3);
Z = reshape(out, WH, WH, C, D);
Z=dlarray(Z,'SSCB')
For more information about “dlarray”, please refer to the following MathWorks documentation link.
Hope you find this information helpful.
댓글 수: 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!