zoukankan      html  css  js  c++  java
  • 04-numpy-笔记-transpose

    借鉴代码https://blog.csdn.net/xiongchengluo1129/article/details/79017142

    吐槽一下CSDN的垃圾广告。。

    这是转置,所以1维(向量)和2维(矩阵)的转置的意义很直观,就是数学上学的。

    难的就是超过三维的张量,怎么转置。

    先看结果:

    >>> import numpy as np
    >>> three=np.arange(18).reshape(2,3,3)
    >>> three
    array([[[ 0,  1,  2],
            [ 3,  4,  5],
            [ 6,  7,  8]],
    
           [[ 9, 10, 11],
            [12, 13, 14],
            [15, 16, 17]]])
    >>> three.transpose()
    array([[[ 0,  9],
            [ 3, 12],
            [ 6, 15]],
    
           [[ 1, 10],
            [ 4, 13],
            [ 7, 16]],
    
           [[ 2, 11],
            [ 5, 14],
            [ 8, 17]]])
    >>> 
    three本身shape是(2,3,3),这个先看清楚了。
    然后,transpose不给参数,默认是从(0,1,2)->(2,1,0)【以上的0,1,2表示的维度的序号】
    所以,three.transpose的结果,最外围(第一维度)就是3的元素(行列其实无所谓,是吧)
    自己画画树状图,比较比较,就很清楚了。

    这不是重点,重点是怎么用。
    在深度学习中,常见这样的表达:
     img_y = np.transpose(img_x, (0,2,1,3))  
    TensorFlow中的图像数据张量,一般是四维,分别是(张数,宽度,高度,通道数)
    这句话的意思就是把宽和高转置。自己体会一下。图片顺序和通道顺序是不变的。

  • 相关阅读:
    比较器
    堆排序
    快速排序
    荷兰国旗问题
    python查漏补缺 --- 基础概念及控制结构
    redis 交集、并集、差集
    spark问题
    IDEA写scala简单操作
    hive 中遇到的正则
    scala模式匹配
  • 原文地址:https://www.cnblogs.com/alexYuin/p/8849715.html
Copyright © 2011-2022 走看看