在 MATLAB 的神经网络向导中使用元胞数组作为输入?
Using cell array as input in Neural Networks Wizard in MATLAB?
我有一个 1x1000 元胞数组,用于数字 0 的 28x28 图像。我将其用作神经网络向导中的输入。但是我不确定目标输出部分应该有什么。我尝试了一个简单的 1x1000 零数组 (0) 和一个 1x1000 零元胞数组。
我完全不知道目标输出的变量类型应该是什么。
如果有人能提供帮助,那就太好了。
谢谢。
为了使用神经网络class化图像,您需要像处理一维像素阵列一样处理它们。所以如果你有一个图像 28x28
像素,你必须将它重新整形为 1x784
数组。如果你有 1000
个这样的图像,你将得到一个 1000x784
矩阵。
你可能会问,网络应该如何使用图像中的二维信息。它不应该这样做!您甚至可以以相同的方式洗牌所有 1x784
数组 并馈送网络,结果将是相同的。
目标呢?假设最初您有一个带有标签的 1000x1
向量。对于 class 化问题,您需要将此向量转换为 1000xN
矩阵,其中 N 是您的 classes 的数量。因此,如果您要 class 化从 0
到 9
的数字,您需要 10
classes。该矩阵的行将仅包含 0
和 1
。每个 1
描述当前 class。
作为示例,我从 here 中提取了一组手写数字。每张图片有 28x28
个像素。整个集合有 10000
个样本。每个像素由对应于灰度级的从0
到255
的数字编码。我将数字除以 255
归一化,所以现在每个像素都有一个 [0..1]
范围内的实数。
您可以从here下载预处理后的数据集。
这是您的代码:
load('X.mat'); %inputs
load('Y.mat'); %targets
net = patternnet(10); %a network with 10 units in the hidden layer
[net,tr] = train(net, X',Y'); %training stage
它将生成如下网络:
数据集将自动分为训练集、验证集和测试集。
可以在这里观察训练进度:
要查看网络的精度,您可能需要查看混淆图:
如您所见,结果非常好。您可以调整网络以获得更好的结果。
我有一个 1x1000 元胞数组,用于数字 0 的 28x28 图像。我将其用作神经网络向导中的输入。但是我不确定目标输出部分应该有什么。我尝试了一个简单的 1x1000 零数组 (0) 和一个 1x1000 零元胞数组。
我完全不知道目标输出的变量类型应该是什么。
如果有人能提供帮助,那就太好了。
谢谢。
为了使用神经网络class化图像,您需要像处理一维像素阵列一样处理它们。所以如果你有一个图像 28x28
像素,你必须将它重新整形为 1x784
数组。如果你有 1000
个这样的图像,你将得到一个 1000x784
矩阵。
你可能会问,网络应该如何使用图像中的二维信息。它不应该这样做!您甚至可以以相同的方式洗牌所有 1x784
数组 并馈送网络,结果将是相同的。
目标呢?假设最初您有一个带有标签的 1000x1
向量。对于 class 化问题,您需要将此向量转换为 1000xN
矩阵,其中 N 是您的 classes 的数量。因此,如果您要 class 化从 0
到 9
的数字,您需要 10
classes。该矩阵的行将仅包含 0
和 1
。每个 1
描述当前 class。
作为示例,我从 here 中提取了一组手写数字。每张图片有 28x28
个像素。整个集合有 10000
个样本。每个像素由对应于灰度级的从0
到255
的数字编码。我将数字除以 255
归一化,所以现在每个像素都有一个 [0..1]
范围内的实数。
您可以从here下载预处理后的数据集。
这是您的代码:
load('X.mat'); %inputs
load('Y.mat'); %targets
net = patternnet(10); %a network with 10 units in the hidden layer
[net,tr] = train(net, X',Y'); %training stage
它将生成如下网络:
数据集将自动分为训练集、验证集和测试集。
可以在这里观察训练进度:
要查看网络的精度,您可能需要查看混淆图:
如您所见,结果非常好。您可以调整网络以获得更好的结果。