在图形标题中显示所有预测及其百分比
Display all predictions and their percentages in the title of a figure
我正在做一个深度学习项目。我有两个变量用于存储预测及其百分比。
这是通过对单元格数组 C 中的每个图像使用 for 循环来完成的。预测和百分比都存储在单独的列向量中,我需要稍后使用
for i=1:size(C)
img=im2uint8(C{i});
img2=imresize(img,[224 224]);
[prediction,pred_val] = classify(n_net,img2)
predictions(i,:)=prediction;
pred_vals(i,:)=pred_val;
figure
imshow(img2)
title(sprintf("%s %s",[labels,num2str(100*pravdepodobnost_predikciesnimky(i,:))]));
end
现在,我想显示所有的预测和百分比,假设网络预测图像由 80% 的海洋和 20% 的人组成,因此图中的标题显示了两个预测,而不仅仅是主要预测.哪种方法最好?
编辑:这里是一个澄清的示例(标题和标签是我的母语):
labels=string(categories(scenes_training.Labels)') %creates 1x2 string array
labels =
"Pobrežie" "Ulica"
在上面的 for 循环的一次迭代后,我得到了这个:
prediction = categorical
Ulica
pred_vals = 1×2 single row vector
0.0046 0.9954
和(修改后)一个figure
所以我的目标是这样写标题:
波动率 0.45644 %;乌利卡 99.5436 %
鉴于上述变量,您可以使用 sprintf
做您想做的事情。
% Use the dummy data from above
labels = ["Pobrežie", "Ulica"];
pred_vals = [0.0046, 0.9954];
% now format a string to use as a title
img_title=sprintf("%s %s%%; ", [labels', num2str(100*pred_vals')]');
%img_title now equals "Pobrežie 0.46%; Ulica 99.54%; "
基本上 sprintf 将循环遍历它提供的所有值,重复字符串格式直到完成。您可以使用它来列出数据矩阵的内容。将数据放在矩阵中并转置它只是一种名称和值交错的方式。
sprintf 输入参数中的嵌套转置只是为了说服 matlab 正确处理不同的值类型 - 这有点老套,但 MATLAB 通常是这样。如果我能找到更好的方法,那么我会更新答案。
如果您不想在字符串末尾使用最后的“;”,那么您可以trim通过后续步骤将其关闭。
我正在做一个深度学习项目。我有两个变量用于存储预测及其百分比。 这是通过对单元格数组 C 中的每个图像使用 for 循环来完成的。预测和百分比都存储在单独的列向量中,我需要稍后使用
for i=1:size(C)
img=im2uint8(C{i});
img2=imresize(img,[224 224]);
[prediction,pred_val] = classify(n_net,img2)
predictions(i,:)=prediction;
pred_vals(i,:)=pred_val;
figure
imshow(img2)
title(sprintf("%s %s",[labels,num2str(100*pravdepodobnost_predikciesnimky(i,:))]));
end
现在,我想显示所有的预测和百分比,假设网络预测图像由 80% 的海洋和 20% 的人组成,因此图中的标题显示了两个预测,而不仅仅是主要预测.哪种方法最好?
编辑:这里是一个澄清的示例(标题和标签是我的母语):
labels=string(categories(scenes_training.Labels)') %creates 1x2 string array
labels =
"Pobrežie" "Ulica"
在上面的 for 循环的一次迭代后,我得到了这个:
prediction = categorical
Ulica
pred_vals = 1×2 single row vector
0.0046 0.9954
和(修改后)一个figure
所以我的目标是这样写标题:
波动率 0.45644 %;乌利卡 99.5436 %
鉴于上述变量,您可以使用 sprintf
做您想做的事情。
% Use the dummy data from above
labels = ["Pobrežie", "Ulica"];
pred_vals = [0.0046, 0.9954];
% now format a string to use as a title
img_title=sprintf("%s %s%%; ", [labels', num2str(100*pred_vals')]');
%img_title now equals "Pobrežie 0.46%; Ulica 99.54%; "
基本上 sprintf 将循环遍历它提供的所有值,重复字符串格式直到完成。您可以使用它来列出数据矩阵的内容。将数据放在矩阵中并转置它只是一种名称和值交错的方式。
sprintf 输入参数中的嵌套转置只是为了说服 matlab 正确处理不同的值类型 - 这有点老套,但 MATLAB 通常是这样。如果我能找到更好的方法,那么我会更新答案。
如果您不想在字符串末尾使用最后的“;”,那么您可以trim通过后续步骤将其关闭。