把一个四维数组分成训练集和验证集CNN(回归)

28日视图(30天)
大家好,我想设计一个CNN的回归 这个Matlab的例子 。它使用一个四维数组来存储图像和矢量来存储每一个图像相关联的值。我使用这个代码创建一个名为“数据库”的四维数组,其中包含图像和一个向量“标签”,其中包含的值。
k = 1;
% 2厘米
i = 1:1000
str = sprintf (“图像/ 2厘米/ % d.jpg”,我);
image_to_store = imread (str);
数据库(:,:1 k) = (image_to_store (:,));%在灰度图像
标签(k) = 2;
k = k + 1;
结束
% 20厘米
i = 1:1000
str = sprintf (“图像/ 20厘米/ % d.jpg”,我);
image_to_store = imread (str);
数据库(:,:1 k) = (image_to_store (:,));
标签(k) = 20;
k = k + 1;
结束
%……
现在,我有我的4 d数组和向量,所以我试图把他们分成训练集和验证集有关建议的例子。谁能帮我了解我可以这样做吗?
谢谢
淡水河谷
1评论
默罕默德瓦里斯-
默罕默德瓦里斯- 2021年3月31日
你好,图片的大小是什么?我想做类似的工作,使4 darraydata也划分为训练和测试。但是当我挺起火车这段代码 https://ch.mathworks.com/help/deeplearning/ug/train-a-convolutional-neural-network-for-regression.html 我遇到一个错误” 不足数量的输出从右手边的等号来满足任务”。

登录置评。

接受的答案

Jakub Sikorowski
Jakub Sikorowski 2019年3月9日
嗨,淡水河谷,
希望这是你想要的:
%你的数据集:
% 1000条目标签2厘米,
%的第二个1000个条目标签20厘米,
数据库=兰德(28日,28,2000);
%的比例训练点= 70%,验证= 30%,测试= 0%
p = 0.7;
%的一种方法把2000数据库条目
[trainInd, valInd testInd] = dividerand(2000页1 - p 0);
trainDatabaseBad =数据库(:,:,:,trainInd);
valDatabaseBad =数据库(:,:,:,valInd);
大小(trainDatabaseBad)%输出:28 28 1400
大小(valDatabaseBad)%输出:28 28 600
%一个更好的方法来划分,确保
%有个人平等的比例2厘米在20厘米的样品
%的训练集、验证集,和整个集合
[trainInd1, valInd1 testInd1] = dividerand(1000页1 - p 0);
[trainInd2, valInd2 testInd2] = dividerand(1000页1 - p 0);
trainDatabase =猫(4、数据库(:,:,:,trainInd1),数据库(:,:,:,trainInd2));
valDatabase =猫(4、数据库(:,:,:,valInd1),数据库(:,:,:,valInd2));
大小(trainDatabase)%输出:28 28 1400
大小(valDatabase)%输出:28 28 600
只是一个警告,在内存中保留数据集可能不是最优的,如果它是一个大型的数据集。如果是这样一个可以使用数据存储。 图像数据存储。 他们与splitEachLabel函数使上述简单得多,并增加帮助之类的数据。
希望有所帮助,
Jakub
1评论
Valerio格洛丽亚
Valerio格洛丽亚 2019年3月11日
谢谢Jakub,代码伟大的工作。但是我决定听从你的建议和使用人数(存储(形象 对回归问题有trasformed到表吗 ):它的工作方式非常好,很容易得多。
再次感谢!
V

登录置评。

更多的答案(0)

社区寻宝

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

开始狩猎!