我怎么能训练多输入深没有数据存储网络

184(30天)
我想建立两个输入,一个输出网络。
但是第一个输入是一个图像和第二个输入是一个矢量。
当我试着培养网络单元阵列包括两个子数组(一个图像,一个向量),我得到了一个错误。
“无效的训练数据应用网络。多培训,使用一个数据存储”。
我创建了4 d图像阵列,每个输入向量数组和标签数组进行训练。
我怎么能把这些数据存储的数据。
Matlab数据存储无法定义变量的数据从工作区。
2的评论
Srivardhan Gadila
Srivardhan Gadila 2021年10月5日
从R2020b开始我们可以直接使用 arrayDatastore 函数,而不是将数据保存到磁盘和加载,如前所述的答案。对于版本小于R2020b答案是解决方案。

登录置评。

接受的答案

Srivardhan Gadila
Srivardhan Gadila 2020年5月3日
定义一个深度学习和培训网络有多个输入,指定网络体系结构使用 layerGraph 对象和培训使用 trainNetwork 函数通过指定多个输入使用 combinedDatastore transformedDatastore 对象。
网络与多个输入的 数据存储 必须是一个 结合 改变了数据存储 返回一个单元阵列( numInputs + 1)列包含预测和响应 numInputs 是网络的数量输入和 numResponses 是反应的数量。为 小于或等于 numInputs , 单元阵列的th元素对应于输入 layers.InputNames(我) ,在那里 层定义网络架构图。最后一列单元阵列对应的响应。
data =阅读(ds)
data =
4×3单元数组
{28×28日}{128年的两倍×128双}{[7]}
{28×28日}{128年的两倍×128双}{[7]}
{28×28日}{128年的两倍×128双}{[9]}
{28×28日}{128年的两倍×128双}{[9]}
因此为了培养多个输入网络必须使用 数据存储 输入参数 & ds trainNetwork 多和多输出网络 , 输入数据存储训练、验证和推理 为更多的信息。
你可以使用下面的代码作为方法如果你的训练数据是保存在一个.mat文件:
% %为muliple生成随机训练数据输入网络
imgDat = randn([200年28日28日3]);
vectorData = randn ((1 200));
trainLabels =分类(randi ([0, 1], 200, 1));
% %特里安数据转换成细胞阵列
imgCells = mat2cell (3 imgDat, 28岁,28日,(200 1));
vectorCells = mat2cell (vectorData 10 1, (200 1));
imgCells =重塑(imgCells (200 1));
vectorCells =重塑(vectorCells (200 1));
labelCells = arrayfun (trainLabels @ x (x),“UniformOutput”、假);
combinedCells = [imgCells vectorCells labelCells];
% %保存转换后的数据,以便它可以被filedatastore加载
保存(“traingData.mat”,“combinedCells”);
filedatastore = filedatastore (“traingdata.mat”,“ReadFcn”,@load);
trainingDatastore =变换(filedatastore @rearrangeData);
% %定义muliple输入网络
layers1 = [
imageInputLayer ([28 28 3],“名字”,“输入”)
convolution2dLayer(3, 16岁,“填充”,“相同”,“名字”,“conv_1”)
batchNormalizationLayer (“名字”,“BN_1”)
reluLayer (“名字”,“relu_1”)
fullyConnectedLayer (10,“名字”,“fc11”)
additionLayer (2“名字”,“添加”)
fullyConnectedLayer (2“名字”,“fc12”)
softmaxLayer (“名字”,“softmax”)
classificationLayer (“名字”,“classOutput”));
lgraph = layerGraph (layers1);
layers2 = [imageInputLayer ([10 1],“名字”,“vinput”)
fullyConnectedLayer (10,“名字”,“fc21”));
lgraph = addLayers (lgraph layers2);
lgraph = connectLayers (lgraph,“fc21”,“添加/ in2”);
情节(lgraph)
% %定义trainingOptions也“洗牌”设置为“从不”这一解决方案的工作
选择= trainingOptions (“亚当”,
“InitialLearnRate”,0.005,
“LearnRateSchedule”,“分段”,
“MaxEpochs”,300,
“MiniBatchSize”,1024,
“详细”,1
“阴谋”,“训练进步”,
“洗牌”,“永远”);
网= trainNetwork (trainingDatastore、lgraph选项);
% % filedatastore函数用于变换
%,确保阅读(数据存储)返回M-by-3单元阵列ie。,(numInputs + 1)列
函数= rearrangeData (ds)
= ds.combinedCells;
结束
7评论
圣苏
圣苏 2022年3月17日
如果多输入数据可以作为[oganized input1, input2,…inputN),它将是一个更简单的方法。

登录置评。

答案(1)

大卫·威林汉
大卫·威林汉 2022年3月11日
请看这个例子中,在R2022a发布,显示了如何训练 多输入网络 。它仍然使用数据存储,但显示出他们很容易可以组合。
3评论
鑫陈
鑫陈 2022年5月25日
无监督多输入神经网络,没有标签,我不知道如何定义第三列的标签,如何生成与结合训练数据,如图像回归问题的两个图像输入?

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!