trainNetwork与响应直言张量

8视图(30天)
马尔特it
马尔特it 2018年11月15日
评论道: 马特·J 2019年7月24日
我的目标是训练神经网络
  • 输入的160型x160x5双(5频道的图像与每160 x160像素)
  • 反应类型的160 x160分类(pixel-wise标签2类)
有N个样本,他们有
  • 输入:160 x160x5xn翻倍
  • 回应:160 x160x1xn直言
网络层映射160 x160x5输入160 x160x2输出(2类)和来自 例子 mathworks。它具有以下结构:
1图片输入160年x160x5图像zerocenter正常化
2卷积64 3 x3的隆起,跨步[1]和填充[1 1 1 1]
3批归一化批正常化
4 ReLU线性整流函数(Rectified Linear Unit)
5马克斯2 x2马克斯池步(2 - 2)和填充[0 0 0 0]
6转置卷积16 4 x4转置运算与步幅[2 2]和输出裁剪[1]
7批归一化批正常化
8 ReLU线性整流函数(Rectified Linear Unit)
9卷积2 1 x1旋转步[1]和填充[0 0 0 0]
10 Softmaxsoftmax
11个像素分类层类加权熵损失类“健康”和“癌症”
我怎么能训练一个网络呢?以下代码失败:
(网络,信息)= trainNetwork(输入、反应层,选项);
%的错误使用trainNetwork(第150行)
%无效的训练数据。输出的大小([160 160 2])的最后一层不匹配
%响应大小([1 1 2])。
根据错误消息,好像正确定义了层,但内部响应张量减少到得到1 x1x2大不是160 x160x2。
评论编辑:改变不类,添加描述层

答案(2)

马尔特it
马尔特it 2018年11月27日
同时我非常unpleasent的方式解决了这个问题:我第一次不得不将所有输入和响应图像保存为gif在我的硬盘,然后加载到一个PixelLabelImageDatastore,似乎没有直接的方法来创建这样一个数据存储的一个矩阵直接(参见我的其他问题)。然后训练使用网络
trainNetwork (imageDatastore层,选项)
使用相同的层,所以他们似乎是正确的。
1评论
马特·J
马特·J 2019年7月24日
我面临着同样的问题。还有没有已知的选择保存所有的图像分离物理文件吗?
我能明白为什么imageDatastore格式的训练数据将是一件好事(增加数据的目的,例如),但我有点惊讶,没有一个更简单的方法来构造一个imageDatastore从图片中给出4 d数值数组形式。

登录置评。


Kushagr古普塔
Kushagr古普塔 2018年11月27日
从问题中提供的部分信息我可以评论,有问题已经创建了网络。
语义分割问题您需要确保以下几点:
  1. 你使用pixelClassificationLayer作为最后一层网络中执行pixelwise分类(不是classificationLayer)。阅读folloiwng详情页面:像素明智的分类
  2. 最后卷积层必须过滤1的大小。有1 x1卷积convoles沿着通道数据维度和保留输入图像的大小,即H和W维度执行1 x1卷积后保持不变。
  3. 不应该有任何完全在你的网络连接层,可能摧毁形象,导致一个向量。注意:错误消息共享似乎表明,有可能是一个fullyConnectedLayer被使用。
牢记上述分而解决语义分割问题。
也读过创建一个 在MATLAB U-Net 网页创建一个语义分割的网络的用户提供的目的。这个网络可以帮助解决的问题处理。
希望这个有帮助。

社区寻宝

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

开始狩猎!