精华内容
下载资源
问答
  • shell 参数个数判断,参数判断

    千次阅读 2021-01-13 22:34:45
    一、执行shell文件时,若脚本无参数,则参数个数为0。 if [ $# -eq 0 ]; then echo "no argument" fi 二、执行shell文件时,若脚本无参数,则第一个参数为空值。 if [ "$1" ]; then echo "no argument" fi ...

    一、执行shell文件时,若脚本无参数,则参数个数为0。

    if [ $# -eq 0 ]; then
        echo "no argument"
    fi

    二、执行shell文件时,若脚本无参数,则第一个参数为空值。

    if [ "$1" ]; then
        echo "no argument"
    fi

    if [ -z "$1" ]; then
        echo "no argument"
    fi

    说明:$#的数量即传递给脚本的参数的数量是从$1开始计算的。$0是脚本本身,不算是参数,从$1开始计算。

     

    展开全文
  • 本篇文章来自于learnopencv....在这篇文章中,我们分享了一些公式来计算张量(图像)的大小和卷积神经网络(CNN)中每一层的参数个数。 此帖子不定义CNN中使用的基本术语...

    本篇文章来自于learnopencv.com/number-of-parameters-and-tensor-sizes-in-convolutional-neural-network/感谢原作者的详细讲解。本人增加一些白话进行补充说明,高手请绕行。~-~ 

    在这篇文章中,我们分享了一些公式来计算张量(图像)的大小和卷积神经网络(CNN)中每一层的参数个数。 此帖子不定义CNN中使用的基本术语,并假定您熟悉它们。在这篇文章中,Tensor一词仅仅是指具有任意数量通道的图像。 我们将以AlexNet为例展示计算结果。因此,这里是AlexNet的架构,供参考。

    AlexNet有以下几层

    1、输入层:大小为227x227x3的彩色图像。AlexNet的论文提到了224×224的输入大小,但这是论文中的一个书写错误。

    2、卷积层1:由96个尺寸为11×11的卷积核组成,步长为4,填充为0。

    3、最大池化层1:由3×3和步长2组成。

    4、卷积层2:由256个大小为5×5的卷积核组成,步长为1,填充为2。

    5、最大池化层2:由3×3和步长2组成。

    6、卷积层3:由384个大小为3×3的卷积核组成,步长为1,填充为1。

    7、卷积层4:卷积层4与卷积层3具有相同的结构。它由384个大小为3×3的内核组成,步长为1,填充为1。

    8、卷积层5:由256个大小为3×3的内核组成,步长为1,填充为1。

    9、最大池化层3:由3×3和步长2组成。

    10、全连接层1:第一个完全连接层有4096个神经元。

    11、全连接层2:第二个完全连接层有4096个神经元。

    12、全连接层3:第三个完全连接层有1000个神经元。

    接下来,我们将用上面的架构来解释

    1、如何计算每个阶段的张量大小

    2、如何计算网络中的参数总数

    卷积层输出张量(图像)的大小

    我们来定义一下

    O = 输出图像的大小(此处指宽度)

    I = 输入图像的大小(此处指宽度)。

    K = 卷积层中使用的卷积核的大小(此处指宽度)。

    N = 卷积核个数。

    S = 卷积运算的步长。

    P = 填充个数。

    输出图像的大小(O)由 下式确定:

                                                    \[ O = \frac{I - K + 2P}{S} + 1 \]

    输出图像中的通道数等于该卷积层的卷积核个数N。

    示例:

    在AlexNet中,输入图像的大小为227x227x3。即宽为227,高为227,通道数为3。卷积层1有96个卷积核,每个卷积核的大小为11x11x3,步长为4,填充为0。因此,在卷积层1之后输出图像的大小(此处指宽度)是

                                                    \[ O = \frac{ 227 - 11 + 2 \times 0 }{4} + 1 = 55 \] 

    因此,输出图像的大小为55x55x96(每个卷积核生成一个通道)。 请读者使用上述图像作为指南来验证卷积层2、卷积层3、卷积层4和卷积层5的输出图像的大小。

    Max Pool层输出张量(图像)的大小

    我们来定义一下

    O = 输出图像的大小(此处指宽度)。

    I = 输入图像的大小(此处指宽度)。

    S = 卷积运算的步长。

    P_s=池大小。

    输出图像的大小(O)由下式确定

                                                    \[ O = \frac{ I - P_s }{S} + 1  \]

    请注意,该公式可由上一节中卷积层输出图像大小的计算公式获得,只要使填充等于零,并且P_s与卷积核大小K相同即可。但与卷积层不同的是,最大池化层输出的通道数不变。

    例如:在AlexNet中,卷积层1之后的最大池化层的池大小为3,步长为2。我们从上一节中知道,这个阶段的图像是55x55x96。最大池化层1之后的输出图像大小(此处指宽度)

                                                    \[ O = \frac{ 55 - 3 }{2} + 1  = 27 \]

    因此,输出图像的大小为27x27x96。 我们留给读者来验证最大池化层2和最大池化层3输出的大小。

    完全连接层输出的大小

    一个完全连接层输出一个向量,该向量长度(向量的元素个数)等于层中的神经元个数。 

     总结:AlexNet各个层的张量大小 (即每个层的神经元个数)

    在AlexNet中,输入是一个大小为227x227x3的图像。在卷积层1之后,将变为为55x55x96的大小,在最大池化层1之后转换为27x27x96。在卷积层2之后,大小更改为27x27x256,并在最大池化层2之后更改为13x13x256。之后卷积层3将其转换为大小为13x13x384,而卷积层4则保持大小不变,卷积层5将更改大小为27x27x256。最后,最大池化层3将尺寸缩小到6x6x256。该图像输入全连接层1,将其转换为大小为4096×1的向量,接下来经过全连接层2,尺寸保持不变,最后,经过全连接层3之后的尺寸为1000×1。 接下来,我们要计算每个卷积层中的参数个数。

    卷积层的参数个数

    在CNN中,每一层都有两种参数:权重和偏差。参数的总数只是所有权重和偏差的总和。

    我们来定义一下:

     W_c=Conv层的权重个数 

    B_c =Conv层的偏差个数

     P_c =Conv层的参数个数

    K=卷积层中使用的卷积核的大小(此处指宽度)

    N=卷积核个数

    C=该层输入图像的通道数

                                                     \begin{align*}  W_c &= K^2 \times C \times N \\ B_c &= N \\ P_c &= W_c + B_c \end{align*}

     在卷积层中,每个卷积核的深度总是等于输入图像中的通道数。所以每个卷积核都有K^2 × C 个参数,并且有N个这样的卷积核。这就是我们得出上述公式的方法。

    例如:在AlexNet中,在卷积层1中,输入图像的通道数(C)为3,卷积核大小(K)为11,卷积核数(N)为96。所以参数的个数是:

                                                   \begin{align*}  W_c &= 11^2 \times 3 \times 96 = 34,848 \\ B_c &= 96 \\ P_c &= 34,848 + 96 = 34,944 \end{align*}

    读者可以验证卷积层2、卷积层3、卷积层4、卷积层5的参数个数分别为614656、885120、1327488和884992。因此,卷积层的参数总数为3747200。你认为这是一个很大的数字?好吧,等到我们看到完全连接层,你就不会这么想了。卷积层的好处之一是,权重是共享的,因此我们的参数比我们在完全连接层的情况下要少的多。所谓权重共享的意思是,卷积层的输出结果中的每个通道由一个卷积核(仅1个)经过卷积运算获得,以卷积层1为例,它的输出为55*55*96,即共有96个通道,每个通道大小为55*55,具体到其中任意一个通道,比如第一个通道C1,由55*55个点组成,它是如何得到的呢?就是由相应的1号卷积核对输入图像(227*227*3)进行一次卷积运算得到的,生成的55*55里面的每个点所使用的权重参数都是这个1号卷积核,这就叫权重共享。

     最大池化层的参数个数

    没有与最大池化层相关联的参数。池的大小、步长和填充都是超参数。

    全连接(FC)层的参数个数

    在CNN中有两种完全连接的层。第一种是该全连接层的前面连接着最后一个卷积层,第二种是该全连接层的前面连接着其他全连接层。让我们分别考虑每一种情况。

    情况1:前面连接着卷积层的全连接(FC)层的参数个数

    我们来定义一下:

    W_{cf}=连接到卷积层的全连接层的权重个数。

    B_{cf}=连接到卷积层的全连接层的偏差个数。

    O=前一个卷积层的输出图像的大小(宽度)。

    N=前一个卷积层中的卷积核个数。

    F=全连接层中的神经元个数。

                                                     \begin{align*} W_{cf} &= O^2 \times N \times F \\ B_{cf} &= F \\ P_{cf} &= W_{cf} + B_{cf} \end{align*}

     示例:AlexNet的第一个全连接层连接到卷积层。对于这一层,O=6,N=256,F=4096。因此,

                                                    \begin{align*} W_{cf} &= 6^2 \times 256 \times 4096 = 37,748,736\\ B_{cf} &= 4096 \\ P_{cf} &= W_{cf} + B_{cf} = 37,752,832 \end{align*}

    这一层的参数个数比所有卷积层的参数个数总和还要多!

    情况2:前面连接着其它全连接层的全连接(FC)层的参数个数

    我们来定义一下:

    W_{ff}=全连接层的权数。

    B_{ff}=全连接层的偏差数。

    P_{ff} =全连接层的参数数目。

    F=全连接层中的神经元数。

    F_{-1}=前一个全连接层中的神经元数。

                                                      \begin{align*} W_{ff} &= F_{-1} \times F \\  B_{ff} &= F \\ P_{ff} &= W_{ff} + B_{ff}   \end{align*}

    在上述公式中,F_{-1} × F是前一个全连接层到本全连接层的权重总数。偏差总数与本全连接层的神经元数(F)相同。

    示例:AlexNet的最后一个全连接层连接到全连接层。对于这一层,F_{-1}=4096,F=1000。因此,

                                                     \begin{align*} W_{ff} &= 4096 \times 1000 = 4,096,000\\  B_{ff} &= 1,000 \\ P_{ff} &= W_{ff} + B_{ff} = 4,097,000 \end{align*}

    我们留给读者来验证AlexNet中全连接层2的参数总数为16,781,312。

    AlexNet中参数和张量大小(神经元个数)的数目

    在AlexNet中的参数总数是5个卷积层加3个全连接层中所有参数的总和。结果竟然是62378344!下表为摘要。

    注:Conv ->卷积层,MaxPool -> 最大池化层, FC -> 全连接层

    Layer NameTensor SizeWeightsBiasesParameters
    Input Image227x227x3000
    Conv-155x55x9634,8489634,944
    MaxPool-127x27x96000
    Conv-227x27x256614,400256614,656
    MaxPool-213x13x256000
    Conv-313x13x384884,736384885,120
    Conv-413x13x3841,327,1043841,327,488
    Conv-513x13x256884,736256884,992
    MaxPool-36x6x256000
    FC-14096×137,748,7364,09637,752,832
    FC-24096×116,777,2164,09616,781,312
    FC-31000×14,096,0001,0004,097,000
    Output1000×1000
    Total   62,378,344
    展开全文
  • ORA-00909:参数个数无效

    万次阅读 2018-09-18 18:23:59
    #ORA-00909:参数个数无效 网上查了很多解决办法,但是都不行。最后发现,自己写的sql语句用到了nvl函数。       正常的nvl函数应该是nvl(String,replace_...

    #ORA-00909:参数个数无效
    网上查了很多解决办法,但是都不行。最后发现,自己写的sql语句用到了nvl函数。
          正常的nvl函数应该是nvl(String,replace_String), 我写成了 nvl(String replace_String),没有写中间那个逗号。
          看来如果sql的方法写错参数了,也会报 ORA-00909:参数个数无效 的错误

    展开全文
  • 上一节我们说到了各种坐标系问题,今天我们先来看看什么是测绘中的七参数和四参数? 1、四参数不同的二维平面直角坐标系之间转换通常使用四参数模型,四参数适合小范围测区(5 km以内)的空间坐标转换。 在该...

    上一节我们说到了各种坐标系问题,今天我们先来看看什么是测绘中的七参数和四参数?

    1、四参数
    两个不同的二维平面直角坐标系之间转换通常使用四参数模型,四参数适合小范围测区(5 km以内)的空间坐标转换。

    在该模型中有四个未知参数,即:

    (1)两个坐标平移量(△X,△Y),即两个平面坐标系的坐标原点之间的坐标差值。

    (2)平面坐标轴的旋转角度A,通过旋转一个角度,可以使两个坐标系的X和Y轴重合在一起。

    (3)尺度因子K,即两个坐标系内的同一段直线的长度比值,实现尺度的比例转换。通常K值几乎等于1。

    四参数的数学含义是:用含有四个参数的方程表示因变量(y)随自变量(x)变化的规律。

    举个例子,在珠海既有北京54的平面坐标又有珠海的平面坐标,在这两种坐标之间转换就用到四参数。四参数的获取需要有两个公共已知点。

    2、七参数

    七参数一般采用布尔沙模型法,三维坐标之间的转换,适合大范围测区(可达到15 km)的空间坐标转换,转换时需要至少3个公共已知点。因为有较多的已知点,所以七参数转换的坐标精度要高于四参数转换的坐标精度,但是操作较四参数法复杂。

    七参数需要在测区布设一定密度的等级控制网点,利用整个网的 W G S - 8 4 坐标系下的三维约束平差结果和当地坐标系统的二维约束平差结果及各点的高程解算,求解较为复杂。

    七参数模型中有七个未知参数,即:

    (1)三个坐标平移量(△X,△Y,△Z),即两个空间坐标系的坐标原点之间坐标差值。

    (2)三个坐标轴的旋转角度(△α,△β,△γ)),通过按顺序旋转三个坐标轴指定角度,可以使两个空间直角坐标系的(X,Y,Z)轴重合在一起。

    (3)尺度因子K,即两个空间坐标系内的同一段直线的长度比值,实现尺度的比例转换。通常K值几乎等于1。

    七参数其涉及到的七个参数为:X平移,Y平移,Z平移,X旋转,Y旋转,Z旋转,尺度变化K。

    七参数坐标转换通常至少需要三个公共已知点,在两个不同空间直角坐标系中的六对(X,Y,Z)坐标值,才能推算出这七个未知参数,计算出了这七个参数,就可以通过七参数方程组,将一个空间直角坐标系下一个点的(X,Y,Z)坐标值转换为另一个空间直角坐标系下的(X,Y,Z)坐标值。

    如 1954坐标系 和 W G S 8 4 转换公式为:
    坐标转换公式
    看个图片直观点
    Δx,Δy,m,α 就是需要求解的4个参数。m表示尺度因子,α表示旋转角。

    一步一步的来看,假设现在需要将1坐标系下的A点转换到2坐标系下。可以理解为三步走:旋转、伸缩、平移。
    在这里插入图片描述
    那么问题来了,现在已知两个公共已知点,需要反求这四个参数?这才是最重要的。(这个地方需要用最小二乘原理,因为方程组需要求最优解,这里不一定是个确定的数。)
    0.0
    C = m * cosα;D = m * sinα
    0.0
    V = B * X — L根据最小二乘原理可以解出:
    在这里插入图片描述
    进而得出X0 ,Y0 ,C, D。
    在这里插入图片描述
    完毕!

    展开全文
  • 有人建议说,函数的参数个数最好不要超过4,这是为什么呢? 这里就涉及到我们的硬件平台了,对于ARM体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard)...
  • def have_yen(n,m): #定义一方法 n=n+m #接收传入的值,进行累加 return n #返回累加完成的值 num=int(input("请输入一值:...num1=int(input("请输入一个数:")) #接收传入的值 num2=have_yen(num,num1) ...
  • 模型参数与模型超参数

    千次阅读 2019-05-29 23:52:54
    什么是模型参数? 模型参数是模型内部的配置变量,其值可以根据数据进行估计。 模型在进行预测时需要它们。它们的值定义了可使用的模型。他们是从数据估计或获悉的。它们通常不由编程者手动设置。他们通常被保存为...
  • 什么是参数估计?

    千次阅读 2020-10-20 20:06:51
    参数估计(parameter estimation) 参数估计属于统计推断的范畴,是根据从总体中抽取的样本估计总体分布中包含的未知参数的方法。...点估计问题就是要构造一只依赖于样本的量,作为未知参数或未知参数的函数的估
  • Python获取函数参数个数和默认参数

    千次阅读 2020-07-16 11:26:11
    前言:本博文主要讲解Python获取函数参数个数和默认参数。 文章目录一、创建函数二、引出问题三、解决问题 一、创建函数 创建一函数可以用来计算三个数的和,如下: def addnum3(num1, num2, num3): """ 该函数...
  • C语言通过argc和argv来获取参数的个数和参数的内容,python中通过sys模块的argv来获取参数的内容,使用len(sys.argv)获取参数的个数。 示例代码: # -*- coding: utf-8 -*- """ Created on Fri ...
  • pytorch 统计模型参数个数

    千次阅读 2019-12-26 15:52:12
    用resnet50 来举例子 print("resnet50 have {} paramerters in total".format(sum(x.numel() for x in resnet50.parameters()))) ...另外,两是一样的,方便debug看其中到底有什么东西 num_params = 0 ...
  • Java方法的可变参数个数

    万次阅读 多人点赞 2014-08-29 10:00:37
    原文:Java方法的可变参数类型许多Java新人在看到下面的这段代码的时候,都会问一问题:dealArray方法里那三小点点是什么啊?[java] view plaincopyprint?public class TestVarArgus { public static ...
  • CNN参数个数和连接个数计算详解

    万次阅读 2017-09-18 15:29:31
    之前所讲的图像处理都是小 patchs ,比如28*28或者36*36之类,考虑如下情形,对于一副1000*1000的图像,即106,当隐层也有106节点时,那么W(1)的数量将达到1012级别,为了减少参数规模,加快训练速度,CNN应运而生。...
  • LSTM参数个数计算

    万次阅读 多人点赞 2018-09-21 16:53:35
    今天看程序看到了LSTM,原理都懂,但是想看看参数的个数是怎么...LSTM这一层的参数个数是 1255424 ,这一看还有整有零的,好奇怎么算出来的,于是百度搜了下,得到这么一公式: 设 LSTM 输入维度为 x_dim, 输...
  • 1.在js中函数没有重载的概念,如果声明了多重名的函数,不管函数的形参个数是否一样,只有最有一有效,其他的函数声明都是无效的。比如说声明了两函数fn(),第一次声明时没有形参,第二次声明时形参有两,则...
  • 时间步对应神经元个数(参数个数)一样.也就是算一LSTM中神经元个数,算一时间步中参与的神经元个数即可.下面将对LSTM每计算部分进行神经元分析. 3.神经元分析 3.1忘记门层  忘记门层 ...
  • module.exports = async(ctx, next) => { ctx.success = (data, status) => {} } 但当我调用ctx.success时,只传入了一值如return ctx.success(data)
  • 普通传入参数方法在这里不写了。 单星号传入元组 def print_param_0(*param): print param >>> print_param_0('test','t1',3) ('test', 't1', 3) 双星号传入map def print_param(**params): print params >>> ...
  • 当传入的函数参数个数未知,比如想要创建一函数,接收任意数量的参数并返回它们的和时,这种情况下使用arguments比使用命名参数更为有效。 function sum(){ var sum=0; for (var i = 0; i < arguments....
  • 什么是命令行参数

    万次阅读 2018-04-15 16:29:55
    摘自《OpenCV 入门教程》 于仕琪 shiqi.yu@szu.edu.cnC/C++语言中的 main 函数,经常带有参数 argc,argv,如下:int main(int argc, char** argv)或者int main(int argc, char* argv[])在上面代码中,argc 表示...
  • 字符串:当已经处在某个有ID的路由页面时,当点击刷新,此时在获取 ID 时,ID 是从URL 字符串中获取的参数,获取到的也是字符串类型的值 数字:当点击菜单切换路由时,此时传过去的 ID 是Numb...
  • linux脚本获取参数个数

    千次阅读 2018-08-16 15:40:47
    本次需求:获取脚本的个数,如果不满足制定个数,输出信息并退出 bash写法: #!/bin/bash if [[ $# &amp;amp;lt; &amp;quot;1&amp;quot; ]]; then echo Please input which directory to be don ...
  • 【输入形式】 输入若干数值 【输出形式】 数值的和(若是浮点数,精确到小数点后两位) 【样例输入】 >3,5 >1.2,3.8,4.56 【样例输出】 8 9.56
  • Qt信号与槽参数个数与类型问题

    千次阅读 2016-11-07 11:51:23
    Qt信号与槽参数个数与类型问题
  • C++ 不定个数参数写法

    万次阅读 2016-01-23 22:28:13
    有时候需要写不定个数参数的函数。就像c语言的sprintf函数。 函数申请方法是比较固定的: return-type functionName( [type t1] …) 比如: void fun(…); int printf ( const char * format, … );省略号的位置就是...
  • MATLAB函数参数个数控制

    千次阅读 2014-11-26 01:07:13
    if nargin else if nargin else if nargin end
  • a=input("输入要计算的参数,用空格隔开") c=1 for item in a.split(): #通过for循环可根据特定符号简洁分割字符串,split()无参默认根据空格切割 c=c*int(item)#切割出来的是字符串,需强转成int型,...
  • pytorch 计算网络参数个数

    千次阅读 2018-08-23 11:28:08
    params = list(net.parameters()) k = 0 for i in params:  l = 1  print("该层的结构:" + str(list(i.size())))  for j in i.size():  l *= j  print("该层参数和:"...总参数数量...
  • 首先不同架构的参数没有比较的意义,比如当初256bit的GTX680吊打384bit的7970(后来农企以驱动翻身获得微弱领先优势),又比如今年256bit...而同架构的显卡 最重要的看四地方:流处理器数量、核芯频率、显存、位宽...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,297,707
精华内容 1,319,082
关键字:

参数个数是什么