我有一个numpy数组,代表一个图像的分段二维矩阵.基本上,它是一个稀疏矩阵,有一堆封闭的形状,是图像片段的轮廓.我需要做的是用numpy中不同的颜色/标签着色每个闭合形状中的空像素.
我知道我可以在PIL中使用floodfill来做这个,但我不想将矩阵从numpy来回转换为PIL.如果像skimage或sklearn这样的某个功能可以"自动标记"我的矩阵的所有不同的封闭区域,并为我提供不同的标签(它可以是单调递增的整数或颜色,那将是很好的.我不喜欢只要它代表其区域内相邻像素的正确分组,就要小心.
我已经花了很多时间来尝试实现我自己的洪水填充,此时我只是喜欢一些可以为我标出图像的开关.
我目前正在实现自定义丢失层,在此过程中,我偶然发现了objectives.py文件[1]中均方误差的实现.我知道我在理解这种损失计算时遗漏了一些东西,因为我一直认为平均值是在每个小批量(张量的轴0)的每个输出的样本中单独进行的,但看起来平均值实际上是在最后一个轴上完成,在一个向量中,意味着它在输出中完成.我在自定义损失层工作时偶然发现了这个问题,因为它需要对特定位置的训练输出中的一些输出的丢失进行折扣.无论如何,我对均方误差的理解是不正确的?为什么Keras会使用最后一个轴,从而将1xn输出向量转换为1x1输出向量?
谢谢.
[1] https://github.com/fchollet/keras/blob/master/keras/objectives.py#L7
我在[1]中看到了类似for-comprehension的帖子,这让我想知道使用不可变Map与Mutable的整体含义是什么.似乎Scala开发人员非常习惯于允许不可变数据结构的突变导致新对象的成本 - 或者我可能只是遗漏了某些东西.如果对不可变数据结构的每个变异操作都返回一个新实例,虽然我知道它对线程安全有好处,但是如果我知道如何微调我的可变对象已经做出同样的保证呢?
我的印象是在一个不可变的Seq上调用seq.toList()会产生一个新的列表,它从第一个列表中共享结构状态.我们发现这可能非常慢,我不知道为什么.这是刚刚分享的结构状态,是否正确?我不明白为什么当它知道它们永远不会改变时,它会为所有元素制作n次副本.