神经网络 高维空间的理解

首先,先看一下在分割问题中,最常见的one-hot编码直观上是如何进行的,以及是怎样进行preds的
下图(图一),是常见的ground-truth分割图,一共有两个类别(背景可以作为0,不单独作为一个类别)
在这里插入图片描述
如果想进行cross-entropy计算损失函数等,就需要对图一的label进行one-hot编码,直观上会变成下图所示(图二)
在这里插入图片描述
然后,我们的图片经过神经网络,训练好之后,输出的预测值就会如下图所示(图三)
在这里插入图片描述
那么下面,假设有两个class,然后图片的格式是(2,3)即height=rows=2,width=cols=3。
根据一般dense prediction,输出格式类似于:(batch_size, 2, 3, 2)
下面为了简便,省略batch_size这个维度,变成(2,3,2)
假设图片在class0与class1上的预测值分别为

#preds values at class0
0.1 0.3 0.1
0.2 0.4 0.1
# preds values at class1
0.2 0.2 0.1
0.5 0.1 0.1

现在的要求是,手写出(2,3,2)的结果,我最开始写的是:

test1 = np.array([[[0.1,0.3,0.1],[0.2,0.4,0.1]],[[0.2,0.2,0.1],[0.5,0.1,0.1]]])

但是,test1.shape:(2,2,3),显然有问题。
那么,(2,3,2)怎么来?

mat1 = np.array([[0.1,0.3,0.1],[0.2,0.4,0.1]])
mat1 = np.expand_dims(mat1,axis=-1)
mat2 = np.array([[0.2,0.2,0.1],[0.5,0.1,0.1]])
mat2 = np.expand_dims(mat2,axis=-1)
mat3 = np.concatenate((mat1,mat2),axis=2)
"""
mat3
Out[91]: 
array([[[0.1, 0.2],
        [0.3, 0.2],
        [0.1, 0.1]],

       [[0.2, 0.5],
        [0.4, 0.1],
        [0.1, 0.1]]])
"""

其实,是最开始的那些“形象”的理解把自己误导了,仔细想想也容易发现,(2,3,2)那么最后肯定是两个类的preds value连在一起的。
最后,说一个我自己理解高维数组的方法。
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值