tensorflow - 当只需要第一个元素时,为什么要创建一个新轴?
问题描述
首先,抱歉标题含糊
由于我有兴趣了解有关 TensorFlow 和图像分割的更多信息,因此我正在关注他们的教程 ( https://www.tensorflow.org/tutorials/images/segmentation )。但是,我注意到一些我无法完全掌握的东西,也不是在谷歌搜索之后。
在这个部分:
def create_mask(pred_mask):
pred_mask = tf.argmax(pred_mask, axis=-1)
pred_mask = pred_mask[..., tf.newaxis]
return pred_mask[0]
首先为 pred_mask 向量创建一个新轴,然后只选择第一个元素的原因是什么?为什么不像我预期的那样,如下图所示:
def create_mask(pred_mask):
pred_mask = tf.argmax(pred_mask, axis=-1)
return pred_mask
解决方案
只是为了保持图像是 3D 张量。例如,如果您有形状预测(1, 256, 256, 10)
(一批 256x256 图像 10 类),tf.argmax()
那么您将收到一个形状张量(1, 256, 256)
(一批 256x256 图像,没有通道)。但通常情况下,如果图像是 HWC 格式(Height, Width, Channel)
而不是(Height, Width)
. 例如,如果您使用 matplotlib 或 OpenCV,通常需要 HWC 图像。
推荐阅读
- c# - 如何将 C 程序放入 C# UWP?
- java - 为什么 Java 将 char 打印为整数?
- reactjs - react-popper 挂载位置不正确
- javascript - 在 HTML 表单底部显示 JavaScript 对象
- android - 如何在 WebView 应用程序上启用深度链接
- c# - .NET Core / .NET 5 中 BackgroundService 中 ServiceBase.OnCustomCommand 的等效项
- c# - C#用迭代创建一个数组
- flutter - Flutter:电子书应用程序:缩放和滚动文本的问题
- react-native - 在产品列表上调用模态会打开所有产品的模态,而不仅仅是被点击的那个
- node.js - Discord Bot {帮助}