精华内容
下载资源
问答
  • 转变到新维度原理的表述如下:

    转变到新维度原理的表述如下:
    1)把物体的动作、布局从一维变成二维,二维变成三维,以此类推
         如果物体在本维度上的运动或者定位很困难,就可以过渡到更高维度上,一般路线为:直线运动-->平面运动-->空间运动;一车道改为多车道,发明飞行器,
         如果物体的布局在本维度比较困难,或者能力有限,也可以过渡到更高的维度上,从而可以获得更高的布局能力,比如造房子,如果在平面上布局,会占用很多土地面积,但如果修高层,向空间发展,则可大大节约土地面积。螺旋式楼梯设计,多碟CD机,立体机架设计,立交桥等。
    2)利用物体不同级别的组合
         比较典型的例子,如Windows的窗口设计,从职能显示一个窗口,到利用页面标签,再到窗口层叠排列,增加了可显示的窗口数量。多层印刷电路板,隔音保暖的双层玻璃窗也是这种利用物体不同级别的组合。利用物体不同级别的组合,简单一点说就是将单层排列的物体变为多层排列。
    3)使用给定物体的“另一面"
          
    也可以是使用给定面的“另一面”,目的是充分利用物体可能的表面,比如双面胶的设计,双面穿的衣服的设计,双面磁带。很多时候,初始的设计中,往往只利用了物体的一面,为了增加某种能力,我们可以使用物体的另一面来增加能力,比如双面打印等。另外在面的利用上面,博比乌斯环是个非常精巧的结构。
    4)将光线投射到邻近的区域或者到物体的反面
          通过这种方式可以改善光照条件,比如无影照明室的设计等;在自然界中的晚上月亮将太阳光线反射到了地球的背阴面,才有了如此多的美丽动人的传说。 
    5)将物体倾斜或侧放
          具体问题具体分析, 但倾斜物体和侧放物体也不失为一种选择。

    当局者迷,旁观者清,有的时候跳出既定的思维或利益格局,在更高的维度上思考一些问题,往往会获得更加宽广的视野,更加全局的信息,对看清问题的本质或者内置具有更好的效果。即使是工程领域,这个维度不一定局限在平常所说的一维,二维和三维空间,很多时候这种维度表达的是系统的一种特性(属性或者视角),比如我们如果只考虑到存放的能力并不能带来全面的设计外,我们可以综合性能,可靠性,安全性等维度,可以获得更为全面的设计。

    一条直线将平面分成两半,要想从线的一边到达线的另一边,不穿过线是不可能的,但如果站在三维角度,这却是显而易见的事情。量子学中的测不准,是否也包含了我们所不知道的维度,才使得电子的轨迹看起来是随机不连续的呢?





        


    展开全文
  • 一维、二维与多维插值

    千次阅读 2015-07-29 16:00:33
    转自:http://hi.baidu.com/%CD%EE%CE%F7%D1%A7%D4%BA%D6%DC%D3%EE/blog/item/4a154c093116e6a92fddd445.html ...一、一维插值  插值运算是根据数据的分布规律,找到一个函数表达式可以连接已知的各点,并用此函

    转自:http://hi.baidu.com/%CD%EE%CE%F7%D1%A7%D4%BA%D6%DC%D3%EE/blog/item/4a154c093116e6a92fddd445.html

     

    插值就是已知一组离散的数据点集,在集合内部某两个点之间预测函数值的方法。

    一、一维插值

        插值运算是根据数据的分布规律,找到一个函数表达式可以连接已知的各点,并用此函数表达式预测两点之间任意位置上的函数值。
        插值运算在信号处理和图像处理领域应用十分广泛。

    1.一维插值函数的使用

        若已知的数据集是平面上的一组离散点集(x,y),则其相应的插值就是一维插值。MATLAB中一维插值函数是interp1。
        y=interp([x,]y,xi,[method],['extrap'],[extrapval]),[]代表可选。
        method:'nearest','linear','spline','pchip','cubic','v5cubic'。


    [0102.3]一维、二维与多维插值



    此m文件运行结果:

     

    [0102.3]一维、二维与多维插值


    放大π/2处:

     

    [0102.3]一维、二维与多维插值


    2.内插运算与外插运算

        (1)只对已知数据点集内部的点进行的插值运算称为内插,可比较准确的估测插值点上的函数值。
        (2)当插值点落在已知数据集的外部时的插值称为外插,要估计外插函数值很难。
        MATLAB对已知数据集外部点上函数值的预测都返回NaN,但可通过为interp1函数添加'extrap'参数指明也用于外插。
        MATLAB的外插结果偏差较大。

     

    二、二维插值

        已知点集在三维空间中的点的插值就二维插值问题,在图像处理中有广泛的应用。
        二维插值函数是interp2,用法与一维插值函数interp1类似。
        ZI=interp2(XYZXIYI, method, extrapval):在已知的(X,Y,Z)三维栅格点数据上,在(XIYI)这些点上用method指定的方法估计函数值,外插使用'extrapval'。

        二维插值中已知数据点集(XY)必须是栅格格式,一般用meshgrid函数产生。interp2要求(XY)必须是严格单调的并且是等间距的,如果(XY)不是等间距的,会将且变换为等间距形式,如果已知是等间距的,可在method参数前加星号,如果:'*cubic'。

     

     

    运行结果:

    [0102.3]一维、二维与多维插值


    三、多维插值

    1.interp3

        三维插值,VI=interp3(X,YZVXIYIZI, method),用法同二维插值interp2。

    2.n维插值

        VI=interpn(X1X2X3…VY1Y2Y3,, method),用法同二维插值interp2。

    3.ndgrid

        产生n维空间上的栅格。

        [X1X2X3, …]=ndgrid(x1x2x3, …)

     

    本文出处

    [1] 王正林,刘明.精通Matlab 7[M].北京:电子工业出版社,2006,P205~P214

    展开全文
  • 神经网络之多维卷积的那些事(一维、二维、三维)

    千次阅读 多人点赞 2020-07-23 18:26:12
    文章目录前言一维卷积Conv1d二维卷积Conv2d三维卷积Conv3d卷积中的特征图大小计算方式总结 前言 一般来说,一维卷积用于文本数据,二维卷积用于图像数据,对宽度和高度都进行卷积,三维卷积用于视频及3D图像处理领域...

    前言

    一般来说,一维卷积用于文本数据,二维卷积用于图像数据,对宽度和高度都进行卷积,三维卷积用于视频及3D图像处理领域(检测动作及人物行为),对立方体的三个面进行卷积 。二维卷积的用处范围最广,在计算机视觉中广泛应用。

    一维卷积Conv1d

    一维卷积最简单,实质是对一个词向量做卷积,如下所示:
    img

    • 图中的输入的数据维度为8,过滤器的维度为5。卷积后输出的数据维度为8−5+1=4
    • 如果过滤器数量仍为1,输入数据的channel数量变为16,则输入数据维度为8×16
    • 一维卷积常用于序列模型,自然语言处理领域。

    Pytorch中nn.Conv1d卷积运算要求输入源是3维,输入源的三个维度分别是:第一个维度代表每个序列的个数即样本数,第二个维度代表每一个序列的通道数,第三个维度代表这个词向量序列,如下所示:

    import torch
    import torch.nn as nn
    # 输入源:1个样本,16个通道,8个数据
    a = torch.randn(1,16,8)
    # 卷积:输入通道为16,输出通道为1,卷积核大小 5*5
    conv = nn.Conv1d(16, 1, 5)
    c = conv(a)
    print('a:', a.size())
    print('c:', c.size())
    

    output

    a: torch.Size([1, 16, 8])
    c: torch.Size([1, 1, 4])
    

    二维卷积Conv2d

    二维卷积是最常见、用途最广泛的卷积。先假定卷积核(过滤器)数量为1,图片通道数为1,卷积操作如下:
    img

    • 图中的输入的数据维度为14×14,卷积核数量为1,图片通道数为1
    • 二维卷积输出的数据尺寸为8−5+1=4,即4×4

    这是最简单的二维卷积的场景,现在重点来了,假定图片通道数为3,卷积核的数量为1,则卷积操作如下:
    在这里插入图片描述

    • 如上图所示,输入源是6*6*3(图片大小6*6,三个通道),卷积核大小3*3,filters(卷积核数量)=1,即权重矩阵是3*3*3*1,得到的结果4*4*1(图片大小4*4,一个通道)
    • 其实就是三个3*3的卷积核分别对图片的三个通道做卷积,然后把结果相加得到一个4*4的图片。所以,这里卷积核w的参数个数是(3*3*3+1)*1,(输入通道3,卷积核大小3*3,一个偏置,输出通道1)
    • 上图卷积 Pytorch中表示为:nn.Conv2d(3,1,kernel_size=(3,3),stride=1)

    到这里可能有人会问,卷积核大小为3*3,为什么变成3*3*3了?
    可以细想一下,图片的大小是6*6*3(图片大小6*6,三个通道),也就是三维的图片,二维的卷积是肯定不能对其操作的,所以卷积核的维度会随着图片的输入通道改变,如果图片的输入通道是3,那么卷积核的维度也是3,如果图片的输入通道是1,那么卷积核的维度也是1,这也就是为什么Pytorch中nn.Conv2d的输入通道要与图片的输入通道保持一致的原因,否则无法进行卷积操作。

    现在,假定图片通道数为3,卷积核的数量为2,则卷积操作如下

    在这里插入图片描述

    • 如上图所示,输入源是6*6*3(图片大小6*6,三个通道),卷积核大小3*3,filters=2,即权重矩阵是3*3*3*2,得到的结果4*4*2
    • 上图每一个卷积核卷积参数的个数是(3*3*3+1)*2
    • 上图卷积 Pytorch中表示为:nn.Conv2d(3,2,kernel_size=(3,3),stride=2)

    计算图如下所示:

    在这里插入图片描述

    二维卷积常用于计算机视觉、图像处理领域。

    Pytorch中nn.Conv2d卷积运算要求输入源是4维,输入源的四个维度分别是:第一个维度代表图片的个数即样本数,第二个维度代表每一张图片的通道数,后面二个维度代表图片的像素矩阵,如下所示:

    import torch
    import torch.nn as nn
    a = torch.Tensor([[[[1,2,3,4],
                    [5,6,7,8],
                    [9,10,11,12],
                    [13,14,15,16]]],
                   [[[1,2,3,4],
                    [5,6,7,8],
                    [9,10,11,12],
                    [13,14,15,16]]]])
    print('a:',a.size())
    # 卷积核:输入通道为1,输出通道6,卷积核大小2*2
    conv = nn.Conv2d(1,6,2)
    c = conv(a)
    print('c:',c.size())
    
    conv1 = nn.Conv2d(6,16,2)
    c1 = conv1(c)
    print('c1:',c1.size())
    

    output

    a: torch.Size([2, 1, 4, 4])
    c: torch.Size([2, 6, 3, 3])
    c1: torch.Size([2, 16, 2, 2])
    

    三维卷积Conv3d

    img

    三维卷积具体思想与一维卷积、二维卷积相同,假设卷积核大小为f1*f2*f3(类似于二维卷积,三维卷积实际计算的时候卷积核是四维的,另一个维度由输入源的通道数决定)

    • 假设输入数据的大小为a1×a2×a3
    • 基于上述情况,三维卷积最终的输出为(a1−f1+1)×(a2−f2+1)×(a3−f3+1)
    • 三维卷积常用于医学领域(CT影响),视频处理领域(检测动作及人物行为)。

    Pytorch中nn.Conv3d要求输入源是5维的,输入源的5个维度分别表示为:第一个维度代表样本的个数,第二个维度代表每个样本的通道数,后面三个维度代表三维立体图形的像素矩阵,如下所示:

    import torch
    import torch.nn as nn
    x = torch.randn(1,2,6,1,1)
    conv = nn.Conv3d(in_channels=2,
                     out_channels=6,
                     kernel_size=(2,1,1))
    c = conv(x)
    print('x:', x.size())
    print('c:', c.size())
    

    output

    x: torch.Size([1, 2, 6, 1, 1])
    c: torch.Size([1, 6, 5, 1, 1])
    

    说明:通道数从输入的2转化为6,一个立体像素矩阵,输入前大小为6*1*1, 卷积核2*1*1,得到结果为(6-2+1)*(1-1+1)*(1-1+1)=5*1*1

    卷积中的特征图大小计算方式

    在神经网络卷积操作主要是提取特征的,因此卷积的输出称为特征图(FeatureMap),神经网络中有多层卷积,所以除了最开始输入的原始图像外,我们认为卷积输入的也是特征图

    当卷积操作步长为1的时候,进行卷积操作后特征图的尺寸比较容易计算,如果步长为2或者更大就不容易计算了。其实这里有一个通用的公式,如下所示:
    W o u t = W i n + 2 ∗ p a d d i n g − K s t r i d e + 1 W_{out} = \frac{ W_{in}+2*padding-K}{stride} + 1 Wout=strideWin+2paddingK+1
    其中, W o u t W_{out} Wout为输出特征图的大小, W i n W_{in} Win为输入特征图的大小,K为卷积核大小,stride为卷积步长,padding为特征图填充的圈数。

    这里不得不提一下,池化操作对上述公式也适用,我看有的文章里说,卷积除不尽的结果都向下取整,池化除不尽的结果都向上取整,这个说法是错误,我经过测试得出Pytorch和TensorFlow默认都是向下取整。如下所示:

    卷积操作向下取整

    # 卷积操作向下取整
    import torch
    import torch.nn as nn
    a = torch.rand(1,1,10,10)
    # (10+2*2-5)/2.0+1 = 5.5
    conv2d = nn.Conv2d(in_channels=1,out_channels=1,kernel_size=(5,5),padding=2,stride=2)
    output = conv2d(a)
    output.size()
    # 输出为:torch.Size([1, 1, 5, 5])
    

    池化默认也是向下取整

    # 池化默认也是向下取整
    import torch
    import torch.nn as nn
    a = torch.rand(1,1,10,10)
    # (10+2*2-5)/2.0+1 = 5.5
    maxpool = nn.MaxPool2d(kernel_size=(5,5),stride=2,padding=2)
    output = maxpool(a)
    output.size()
    # 输出为:torch.Size([1, 1, 5, 5])
    

    但是,Pytorch中池化层有个参数ceil_node=True是向上取整的,它默认是False,TensorFlow里面没找到类似的参数

    # 池化层ceil_mode=True向上取整
    import torch
    import torch.nn as nn
    a = torch.rand(1,1,10,10)
    # (10+2*2-5)/2.0+1 = 5.5
    maxpool = nn.MaxPool2d(kernel_size=(5,5),stride=2,padding=2,ceil_mode=True)
    output = maxpool(a)
    output.size()
    # 输出为:torch.Size([1, 1, 6, 6])
    

    总结

    到这里我们学到了

    • 不同卷积的应用
    • 多维卷积的原理
    • 多维卷积核参数的个数
    • 卷积中的特征图计算方式

    是不是感觉收获满满!!!

    展开全文
  • 今天就针对多维数组展开来写博客numpy其部分功能如下: 1.ndarray,是具有矢量算术运算且节省空间的多维数组。 2.可以用于对整组的数据快速进行运算的辨准数学函数。 3.能够用于读写磁盘数据的工具以及用于操作...
  • 多维数组转化为一维数组---js方法

    千次阅读 2017-10-20 15:23:52
    最近在面试,面试官问我如何把多维数组转化为一维数组,发现自己真的不太会,在此总结了一些前端使用js来把多维数组转化为以为数组的方 法,其实总体的方法就是先把数组转化为字符串,之后在把字符串转化为数组,以此...

           最近在面试,面试官问我如何把多维数组转化为一维数组,发现自己真的不太会,在此总结了一些前端使用js来把多维数组转化为以为数组的方

    法,其实总体的方法就是先把数组转化为字符串,之后在把字符串转化为数组,以此达到把多维数组转化为一维数组。

             方法一:使用join()

             join() 方法用于把数组中的所有元素放入一个字符串,split() 方法用于把一个字符串分割成字符串数组。

             var a = [1,3,4,5,[6,7,9],[2],[5]];

             a = a.join(",").split(","); 

             输出结果a=[1,3,4,5,6,7,9,2,5];

            方法二:使用toString()

            toString() 方法可把一个逻辑值转换为字符串,并返回结果。

            var a = [1,3,4,5,[6,7,9],[2],[5]];

            a = a.toString().split(",");

             输出结果a=[1,3,4,5,6,7,9,2,5];

            方法三:空字符串

             var a = [1,3,4,5,[6,7,9],[2],[5]];

             a = (a+'').split(',');

            输出结果a=[1,3,4,5,6,7,9,2,5];

            其实以上的三种方法都是一个原理,就是先把数组转化为字符串,然后在对字符串进行操作,最终达到把多维数组中的数据转化为一维数组。

            希望这篇文章对面试的人会起到帮助!!!


    展开全文
  • LSTM网络多维预测

    2018-05-03 10:02:06
    利用LSTM循环神经网络对多维数据进行预测,先对数据进行归一化处理,划分为训练集、测试集,用4个参数预测个参数值
  • 图像识别技术原理和神经网络的图像识别技术

    万次阅读 多人点赞 2019-03-03 19:44:58
    图像识别技术是信息时代的一门...简单分析了图像识别技术的引入、其技术原理以及模式识别等,之后介绍了神经网络的图像识别技术和非线性降维的图像识别技术及图像识别技术的应用。从中可以总结出图像处理技术的应用...
  • 一维牛顿法与多维牛顿法

    千次阅读 2020-03-20 12:22:41
    为非线性回归的目标函数是使残差最小,本质上还是个求最小值的问题 原理 优化目标函数 梯度 黑塞矩阵 O矩阵的元素一般为0,可以省略 牛顿法迭代公式(包含修正) 可见高斯牛顿法只需要用到一阶偏导即可 高斯牛顿...
  • 总结了Fortran中二多维数组的应用方式。
  • 将不规则的Python多维数组拉平到一维

    万次阅读 多人点赞 2021-01-09 03:10:19
    例如有个列表: l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 希望把它转换成下面这种形式: [1, 2, 3, 4, 5, 6, 7, 8, 9] 使用numpy拉平数组 import numpy as np np.array(l).flatten().tolist() 结果: [1, 2, 3,...
  • 一分钟看懂一维空间到十维空间

    万次阅读 2018-12-16 23:08:54
    如果把一到十维度的空间用一张图来表达,你是否会看得明白呢?根据弦理论,粒子被看作是长度为普朗克尺度一维弦,在引入费米子的座标后,科学家提出了超弦理论。超弦理论暗示的平行宇...
  • 《编译技术》上机实验:词法语法分析器的设计与实现,生成抽象语法树。 此处完成补充 多维数组定义 的操作
  • 正如你所看到的,Collection 类允许你使用方法链对底层数组执行匹配和移除操作,通常,每个 Collection 方法都会返回个新的 Collection 实例。 //构建collect对象根据priority_index字段正序排 $book1 = collect...
  • 图像分割综述

    万次阅读 多人点赞 2019-07-09 22:03:48
    图像分割是计算机视觉研究中的个经典难题,已经成为图像理解领域关注的个热点,图像分割是图像分析的第步,是计算机视觉的基础,是图像理解的重要组成部分,同时也是图像处理中最困难的问题之。所谓图像分割...
  • 《编译技术》上机 实验:词法语法分析器的设计与实现,生成抽象语法树。此处完成补充 多维数组赋值 的操作
  • Keras-一维卷积及模型优化方法

    千次阅读 2020-03-01 01:14:29
    学习概述 学习了一维卷积的原理及特点 Keras API的用法 深度学习的模型提升方法 一维卷积   卷积运算可以从输入数据中提取局部特征,二维三维卷积运算在计算机视觉上表现优越。一维卷积则在序列问题上表现不错,它...
  • TensorFlow入门

    千次阅读 多人点赞 2019-04-23 10:09:29
    一维张量表示的是一个向量,也可以看作是一个一维数组;二维张量表示的是一个矩阵;同理,N维张量也就是N维矩阵。 # 导入tensorflow模块 import tensorflow as tf a = tf.constant([[2.0, 3.0]], name = "a") b =...
  • 最近写程序发现自己对数组方面的概念知识不是特别的清晰,然后就在网上查了些资料,把书上关于数组的知识复习了遍,现在把我学习数组的过程记录下来,让自己对数组有更加深刻的影响。我主要是介绍了数组的一些基本...
  • 概率论————思维导图(上岸必备)(一维随机随机变量及其分布). 概率论————思维导图(上岸必备)(多维随机变量及其分布). 概率论————思维导图(上岸必备)(数字特征). 概率论————思维导图(上岸必备...
  • 傅里叶级数、一维傅里叶变换到二维傅里叶变换数理推导 参考资料: 如何理解傅里叶级数公式 从傅里叶级数到傅里叶变换 高维傅里叶变换的推导 IDL实现傅里叶变换 傅里叶级数 一维傅里叶变换 二维傅里叶变换 ...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    章 C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序。当然仅靠章的内容就完全掌握C#语言是不可能的,...
  • 卡尔曼滤波系列——(二)扩展卡尔曼滤波

    万次阅读 多人点赞 2019-04-06 16:33:48
    扩展卡尔曼滤波(Extended Kalman Filter,EKF)是标准卡尔曼滤波在非线性情形下的种扩展形式,它是种高效率的递归滤波器(自回归滤波器)。 EKF的基本思想是利用泰勒级数展开将非线性系统线性化,然后采用...
  • C语言入门系列之6.一维和二维数组

    千次阅读 多人点赞 2020-04-27 10:18:31
    在C语言中使用数组必须先进行定义,一维数组声明格式为类型说明符 数组名 [常量表达式];,不允许对数组的大小作动态定义;形式为数组名[下标];给数组赋值包括赋值语句赋值、初始化赋值和动态赋值3种方式。二维数组...
  • 现在是将一个二维数组进行冒泡排序,是不是得先转化为一维数组. 二维数组int arr[{13,1,9},{8,5},{20,40}]
  • Numpy多维数组的内存设计与实现原理

    千次阅读 2018-11-26 22:42:04
    ndarray的内存实现原理、切片索引的视图原理
  • 目录 1 array_reduce函数法 2array_walk_recursive函数法 ...假设有下面个二数组: $user = array( '0' => array('id' => 100, 'username' => 'a1'), '1' => array('id' => 101, 'username...
  • 5、一维插值原理 6、一维插值方法 6.1、拉格朗日插值 6.2、分段线性插值 6.3、三次样条插值 3.2 二维插值方法 1、高维插值的应用背景 2、二维插值的基本原理 2.1、规则网格下二维插值 2.2、散乱节点网格下二维插值 3...
  • 目录1 array_reduce函数法2 array_walk_recursive函数法3 array_map函数法假设有下面个二数组:$user = array( '0' => array('id' => 100, 'username' => 'a1'), '1' => array...
  • 我们在使用二维数组作为参数时,我们可以指明这个数组所有的维数,同时我们也可以省略一维,但是二维或者高维却不能省略。why呢?由于编译器原理的限制,在一个数组Elemtype test[m][n]中,访问test[i][j]时(也就是...
  • Otsu算法的原理与实现

    万次阅读 2017-10-23 18:43:06
    1.简介: 一维Otsu算法有计算简洁、稳定、自适应强等优点,被广泛用于图像分割中。但一维Otsu算法没有考虑图像像素点之间的关系,当图像中有噪声时,会导致分割的效果不理想。因此,刘健庄等人在1993年提出了二维的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,138
精华内容 7,655
关键字:

一维变多维原理