使用numpy解决图像维度变换问题

numpy函数介绍

1. np.transpose(input, axes=None)

在机器学习中经常会碰到各种图像数据集,有的是按照num*height*width*channel来存储的,而有的则是num*channel*height*width。然后每次碰到这种问题都会想半天该怎么相互变换。

也想过自己手敲代码实现,但是一方面速度肯定没别人的方法好,另一方面还不一定是对的233。其实numpy已经帮我们都弄好了,我们只要使用np.transpose方法即可。

例如输入数据是a.shape = 1000*32*32*3(num*height*width*channel)

我们只需要使用如下代码即可达到要求。

  1. a = np.transpose(a, [0,3,1,2]) 

2. np.concatenate((a1, a2, …), axis=0)

  • 参数1:表示需要叠加的一组矩阵,可以是元组形式 (a1, a2, …),也可以是列表形式[a1,a2,…]。另外,各个矩阵的维度必须保持一致!
  • 参数2:axis默认为0,当然也可以设置为其他的值。

3. np.newaxis

这个可以用于扩展一个新的维度,例如假设我们的标签y.shape=(10,),我们想把它变成**(10,1)**该怎么做?很简单:

  1. y = y[:, np.newaxis] 
  2. # 其实也可以这样
  3. y = np.reshape(y, [len(y),1]) 

效果图如下:

实践出真知

现假设我们有一组二维图像数据集,其大小为3*2*2 (num*height*width)。我们现在想将这个二维数据集转化成3维的,而且最后维度顺序要是num*height*width*channel,我们应该咋办呢?

1. 扩展出一个新的维度用来表示channel

新增加一个维度,建议先将channel增加在第二个维度,这样更好理解,而且数据不会被打乱。

2.叠加channel

3.维度转置

4.验证是否正确

最后来验证一下这一波操作是否正确:

可以看到是正确的!!!

5.整体演示代码


MARSGGBO♥原创 2018-8-5

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

深度学习: 卷积核 为什么都是 奇数size

40110
来自专栏10km的专栏

SSD(Single Shot MultiBox Detector):绘制训练过程loss,accuracy曲线

关于标准Caffe绘制loss,accuracy曲线参见这篇博客,写得很详细《Caffe 绘制训练过程loss,accuracy曲线》,而训练SSD时绘制los...

55380
来自专栏计算机视觉与深度学习基础

【深度学习】使用tensorflow实现VGG19网络

转载注明出处:http://blog.csdn.net/accepthjp/article/details/70170217 接上一篇AlexNet,本文讲...

83090
来自专栏ml

mxnet运行时遇到问题及解决方法

1.训练好模型之后,进行预测时出现这种错误: 1 mxnet.base.MXNetError: [15:05:50] src/ndarray/ndarray.c...

64540
来自专栏计算机视觉与深度学习基础

【深度学习】使用tensorflow实现VGG19网络

接上一篇AlexNet,本文讲述使用tensorflow实现VGG19网络。 VGG网络与AlexNet类似,也是一种CNN,VGG在2014年的 ILSV...

56940
来自专栏ml

tensorflow版的bvlc模型

     研究相关的图片分类,偶然看到bvlc模型,但是没有tensorflow版本的,所以将caffe版本的改成了tensorflow的: 关于模型这个图: ...

34450
来自专栏杨熹的专栏

TensorFlow -2: 用 CNN 识别数字

昨天只是用了简单的 softmax 做数字识别,准确率为 92%,这个太低了,今天用 CNN 来提高一下准确率。关于 CNN,可以看这篇:图解何为CNN简单看一...

1.6K00
来自专栏杨熹的专栏

TensorFlow-2: 用 CNN 识别数字

---- 本文结构: CNN 建立模型 code ---- 昨天只是用了简单的 softmax 做数字识别,准确率为 92%,这个太低了,今天用 CNN 来提高...

36650
来自专栏机器人网

深度学习三要素:数据、模型、计算

数据来源:主要通过对初始数据图片进行人工标注和机器标注。数据样本非常的重要,好的样本等于成功了一半。

10020
来自专栏marsggbo

Python数据增强(data augmentation)库--Augmentor 使用介绍

Augmentor 使用介绍 原图 ? 1.random_distortion(probability, grid_height, grid_width, ma...

50580

扫码关注云+社区

领取腾讯云代金券