当前位置: 首页 > news >正文

现在帮别人做网站赚钱不企业网站排名软件度智能优化

现在帮别人做网站赚钱不,企业网站排名软件度智能优化,网站备案号在哪里看,网站中加入地图导航“他山之石#xff0c;可以攻玉”#xff0c;站在巨人的肩膀才能看得更高#xff0c;走得更远。在科研的道路上#xff0c;更需借助东风才能更快前行。为此#xff0c;我们特别搜集整理了一些实用的代码链接#xff0c;数据集#xff0c;软件#xff0c;编程技巧等可以攻玉”站在巨人的肩膀才能看得更高走得更远。在科研的道路上更需借助东风才能更快前行。为此我们特别搜集整理了一些实用的代码链接数据集软件编程技巧等开辟“他山之石”专栏助你乘风破浪一路奋勇向前敬请关注。作者CSDN—Ferris_YU_Q地址https://blog.csdn.net/hurry0808本文以CIFAR-10(https://www.cs.toronto.edu/~kriz/cifar.html)为数据集基于Tensorflow介绍了CNN(卷积神经网络)图像分类模型的构建过程着重分析了在建模过程中卷积层、池化层、扁平化层、全连接层、输出层的运算机理以及经过运算后图像尺寸、数据维度等参数的变化情况。01CIFAR-10数据集介绍CIFAR-10数据集由60000张彩色图片构成其中包括50000张训练集图片、10000张测试集图片每张图片的shape为(32,32,3)即图片尺寸为32*32通道数为3所有图片可以被分为10类包括飞机汽车鸟类猫鹿狗青蛙马船只卡车官网截图如下所示02利用Tensorflow构建CNN图像多分类模型TensorFlow™(https://www.tensorflow.org/?hlzh-cn) 是一个使用数据流图进行数值计算的开放源代码软件库其API可在Python、C、Java、Go、Swift (Early Release)语言中调用其中Python API是目前最完整且易用的。TensorFlow擅长训练深度神经网络被认定为是神经网络中最好用的库之一。通过使用TensorFlow我们可以快速入门神经网络, 大大降低了深度学习(也就是深度神经网络)的开发成本和开发难度。Tensorflow使用数据流图进行数值计算图中的节点代表数学运算图中的边代表在这些节点之间传递的多维数组(张量)。在使用其构建模型时先搭建好流图结构——类似于铺好管道然后再加载数据——向管道中注水让数据在各节点计算、沿各管道流动数据在流图中计算、传递时采用多维数组(张量)的形式因此在Tensorflow中参与计算的均为数组数据类型。本文使用Tensorflow构建简单的CNN图像多分类模型其由3个卷积(含激活函数)与池化层、1个扁平层、3个全连接层、1个输出层构成示意图如下所示输入(Input)层图像数据经过标准化(normalize)、ont-hot编码等预处理后形成的4D张量本文输入层张量shape为[batch, height, width, channels]。卷积(Convolution)层卷积层与池化层的作用在于1. invariance(不变性)这种不变性包括translation(平移)rotation(旋转)scale(尺度)2. 保留主要的特征同时减少参数(降维效果类似PCA)和计算量防止过拟合提高模型泛化能力。卷积层计算的过程如下图所示最左侧为输入层图像(加padding后的shape(7,7,3))中部为2个卷积核W0、W1及与之相对应的Bias b0、b1最右侧为输入图像与核w0、w1进行卷积计算后的结果——前者对应于上部图、后者对应于下部图卷积计算得到的结果即为feature map。每个卷积核与上层图像进行卷积运算后均会得到1个feature map。对于3通道图像参考本图卷积运算的过程如下1. 输入图像的每个通道分别从左上角开始每次取与卷积核大小相同的部分(称之为patch)与卷积核对应部分分别相乘后再相加(内积运算)如R通道与W0的最上部核(0核)对应元素相乘再相加得到0G通道与w0的1核做内积运算得到2B通道与w0的2核做内积运算后得到02. 内积运算得到的结果相加再加上w0的bias值(b0)得到feature map左上的元素值即020133. 按照指定步长移动卷积核直至输入图像被整个覆盖得到最终的feature map本图中步长(stride)为(2,2)。这里是动图Tensorflow实现卷积运算的函数为tf.nn.conv2d( input, filter, strides, padding, use_cudnn_on_gpuTrue, data_formatNHWC, dilations[1, 1, 1, 1], nameNone)参数说明如下input需要做卷积的输入图像它要求是一个Tensorshape为[batch, in_height, in_width, in_channels]具体含义是[训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数]注意这是一个4维的Tensor要求类型为float32和float64其中之一filter相当于CNN中的卷积核它要求是一个Tensorshape为[filter_height, filter_width, in_channels, out_channels]具体含义是[卷积核的高度卷积核的宽度图像通道数卷积核个数]要求类型与参数input相同filter的通道数要求与input的in_channels一致有一个地方需要注意第三维in_channels就是参数input的第四维strides卷积时在图像每一维的步长这是一个一维的向量长度4strides[0]strides[3]1paddingstring类型的量只能是”SAME”、”VALID”其中之一这个值决定了不同的卷积方式卷积运算时卷积核滑动过程中当输入图像(input)的in_height、in_width不是filter的filter_height、filter_width的整数倍时”SAME”方式是在input周围填充0以将其in_height、in_width补充为filter相应部分的整数倍”VALID”方式将input的多余部分丢弃详细介绍请参看这里use_cudnn_on_gpubool类型是否使用cudnn加速默认为truedata_format指定输入数据、输出数据的格式取值为”NHWC”、”NCHW”前者对应于 [batch, height, width, channels]后者对应于 [batch, channels, height, width]默认为’NHWC’。dilations一个可选的ints列表默认为[1,1,1,1]。长度为4的一维张量每个input维度的膨胀系数如果设置为k 1则每个该维度上的过滤器元素之间会有k-1个跳过的单元格维度顺序由data_format的值决定在Dilations中批次和深度尺寸必须为1name为该操作指定名称返回值Tensor也就是我们常说的feature map。输入图像经过卷积运算后其高度、宽度变为——‘SAME’ 类型的padding,其输出的height和width计算如下out_height ceil(float(in_height) / float(strides[1])) ceil向上取整out_width ceil(float(in_width) / float(strides[2]))‘VALID’类型的padding, 其输出的height和width计算如下out_height ceil(float(in_height – filter_height 1) / float(strides[1]))out_width ceil(float(in_width – filter_width 1) / float(strides[2]))验证该函数的文章请看这里(https://blog.csdn.net/u012609509/article/details/71215859)。激活函数(Activation Function)池化层、全连接层等通过线性运算构建的是线性模型该模型的表达能力有限激活函数能够加入非线性因素从而使模型的表达能力得到极大提升。常用的激活函数有Tanh函数 、ReLU函数 、Leaky ReLU函数 、Maxout函数 等本文使用ReLU函数作为激活函数。Tensorflow中的relu激活函数为tf.nn.relu( features, nameNone)参数说明如下features: 张量必须为以下类型中的一种float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64name: 为该操作指定名称Returns: 张量。池化(Pooling)层池化层与卷积层的作用、计算方法类似也有池化filter、步长、填充方式等参数所不同的是池化计算比较简单常取filter覆盖部分的最大值、或者均值分别称之为最大池化、平均池化最大池化的示意图如下所示最大池化的filter shape为(2,2) 步长也为(2,2)每个filter滑动覆盖处取最大值得到右侧所示的结果。Tensorflow实现最大池化运算的函数为tf.nn.max_pool( value, ksize, strides, padding, data_formatNHWC, nameNone)参数说明如下value输入4D张量 其格式由data_format指定ksize含有4个元素的1D张量指定池化核的尺寸strides含有4个元素的1D int 张量指定池化时在图像每一维的步长strides[0]strides[3]1padding边界填充方式string类型的量只能是”SAME”、”VALID”其中之一data_format数据格式string类型的量 只能是’NHWC’、 ‘NCHW’ 、’NCHW_VECT_C’ 其中之一name为该操作指定名称返回值Tensor也就是我们常说的feature map。上层feature map经池化运算后其batch、channels均不发生变化只有height、width会发生变化输出height、width计算方式同卷积层。扁平化(Flatten)层将上一层得到的全部feature map拉直成列向量作为全连接网络的输入。拉直方式为height*width*channels。Tensorflow实现扁平化层运算的函数为tf.contrib.layers.flatten( inputs, outputs_collectionsNone, scopeNone)参数说明如下inputs形如 [batch_size, …]的张量注意张量的第1个元素必须为batch_sizeoutputs_collections添加到输出的集合scopename_scope的可选范围。返回值形如[batch_size, k]的扁平化张量。图像分类模型训练完成后本层返回张量的shape(主要是k)就确定了从而限定了模型预测时输入图像的尺寸——因为在模型确定的情况下卷积层、池化层等结构、数量均不再改变预测图像与训练图像尺寸一致时经卷积、池化等运算后扁平化输出shape与模型一致预测图像与训练图像尺寸不一致时经卷积、池化等运算后扁平化输出的shape与模型不一致从而无法继续运算。这也是迁移学习时预训练模型均约定输入图像height、width的原因。从该层开始分类模型的网络结构类似于“多层前馈神经网络”。全连接(Fully Connected)层全连接层在整个卷积神经网络中起到“分类器”的作用、也是模型表示能力的“防火墙”。全连接层的运算形如X*WbX*W为矩阵乘法其中X为输入2维数组(shape为[batch_size, k])W为权重2维数组(shape为[kout_k])b为偏置W的第2个元素(out_k)决定了全连接层运算后输出的2维数组形状(shape为[batch_size, out_k])。由于全连接层参数冗余(仅全连接层参数就可占整个网络参数80%左右)需要使用tf.nn.dropout来随机丢弃一些节点或者使用一些性能优异的网络模型如ResNet和GoogLeNet等来取代全连接层融合学到的深度特征。Tensorflow中实现全连接层的函数为tf.layers.dense( inputs, units, activationNone, use_biasTrue, kernel_initializerNone, bias_initializertf.zeros_initializer(), kernel_regularizerNone, bias_regularizerNone, activity_regularizerNone, kernel_constraintNone, bias_constraintNone, trainableTrue, nameNone, reuseNone)参数说明如下inputs: Tensor input.units: Integer or Long, dimensionality of the output space.activation: Activation function (callable). Set it to None to maintain a linear activation.use_bias: Boolean, whether the layer uses a bias.kernel_initializer: Initializer function for the weight matrix. If None (default), weights are initialized using the default initializer used by tf.get_variable.bias_initializer: Initializer function for the bias.kernel_regularizer: Regularizer function for the weight matrix.bias_regularizer: Regularizer function for the bias.activity_regularizer: Regularizer function for the output.kernel_constraint: An optional projection function to be applied to the kernel after being updated by an Optimizer (e.g. used to implement norm constraints or value constraints for layer weights). The function must take as input the unprojected variable and must return the projected variable (which must have the same shape). Constraints are not safe to use when doing asynchronous distributed training.bias_constraint: An optional projection function to be applied to the bias after being updated by an Optimizer.trainable: Boolean, if True also add variables to the graph collection GraphKeys.TRAINABLE_VARIABLES (see tf.Variable).name: String, the name of the layer.reuse: Boolean, whether to reuse the weights of a previous layer by the same name.Returns:Output tensor the same shape as inputs except the last dimension is of size units.Tensorflow中的Dropout函数为tf.nn.dropout( x, keep_prob, noise_shapeNone, seedNone, nameNone)参数说明x: A floating point tensor.keep_prob: A scalar Tensor with the same type as x. The probability that each element is kept.noise_shape: A 1-D Tensor of type int32, representing the shape for randomly generated keep/drop flags.seed: A Python integer. Used to create random seeds. See tf.set_random_seed for behavior.name: A name for this operation (optional).Returns: A Tensor of the same shape of x.输出(Output)层输出层运算与全连接层类似只是在设定运算参数时输出节点数量需与分类标记数量相一致并且在运算完成后再使用tf.nn.softmax函数得到测试图像属于各分类的概率该所有概率值之和为1。Tensorflow中的tf.nn.softmax函数如下所示tf.nn.softmax( logits, axisNone, nameNone, dimNone)参数说明如下logits: A non-empty Tensor. Must be one of the following types: half, float32, float64.axis: The dimension softmax would be performed on. The default is -1 which indicates the last dimension.name: A name for the operation (optional).dim: Deprecated alias for axis.Returns: A Tensor. Has the same type and shape as logits.训练得到分类模型按照输入层、卷积层与池化层(共3层)、扁平化层、全连接层(共3层)、输出层的顺序搭建好模型以交叉熵均值作为cost以Adam优化算法寻找全局最优点以cost、Accuracy(分类准确率)作为评估模型的指标各层参数设置如下图所示补充说明如下batch为训练时每批输入的图像数量视训练环境的硬件配置而定本文设置为512卷积核height,width(3,3)卷积步长(1,1,1,1)卷积 paddingSAME激活函数tf.nn.relu最大池化height,width(2,2)最大池化步长(1,2,2,1)池化 paddingSAMEDropout时保留节点的比例0.5Epochs(训练轮数)30训练构建好的CNN图像分类模型时单张图片用3D数组表示多张图片用4D数组表示经过卷积、激活函数、池化、扁平化、全连接、Dropout等运算其batch、height、width、channels、feature map数量、节点数量、数据shape有的会发生变化有的不会发生变化如下表所示使用CIFAR-10训练集进行训练在训练集和测试集上的准确率均为0.73如下图所示03小结本文以CIFAR-10数据集为例使用Tensorflow构建了简单的CNN图像分类模型该模型包含输入层、卷积与池化层、扁平化层、全连接层、输出层这些层均是构建CNN分类模型必要且重要的层训练后分类模型的准确率虽然不够高但本文重在分析各层运算时图像数据shape的变化及其它尺寸数据的改变情况。本文目的在于学术交流并不代表本公众号赞同其观点或对其内容真实性负责版权归原作者所有如有侵权请告知删除。“他山之石”历史文章pytorch中optimizer对loss的影响使用PyTorch 1.6 for Android神经网络解微分方程实例三体问题pytorch 实现双边滤波编译PyTorch静态库工业界视频理解解决方案大汇总动手造轮子-rnn凭什么相信你我的CNN模型关于CNN模型可解释性的思考“最全PyTorch分布式教程”来了c接口libtorch介绍 vscodecmake实践python从零开始构建知识图谱一文读懂 PyTorch 模型保存与载入适合PyTorch小白的官网教程Learning PyTorch With Examplespytorch量化备忘录LSTM模型结构的可视化更多他山之石专栏文章请点击文章底部“阅读原文”查看分享、点赞、在看给个三连击呗
http://www.yutouwan.com/news/471845/

相关文章:

  • 什么编程语言做网站安全番禺人才网招聘网官网
  • 重庆网站建设公司 菠拿拿哪些网站可以做装修
  • 产品设计私单网站建立网站 优帮云
  • 网站域名密码忘了网站备案资料查询
  • 网站建设费属于哪个会计科目建设银行的网站是多少
  • 阿里巴巴自助建站的一般流程广东网站建设定制
  • 建设校园网站的意义phpwind 转wordpress
  • 没钱怎么做网站做网站合肥
  • 上海网站制作公司哪家百度竞价规则
  • 网站设计哪家强成都网站建设龙兵
  • 网站发布的方法有几种.net可以做网站做游戏 博客园
  • 用地方别名做网站名wordpress获取分类目录连接
  • ftp网站服务器梅州在建高铁最新消息
  • 直播类网站怎么做做电影网站用什么cms
  • 政务内网网站建设方案网站开发验收单
  • 广州建设银行投诉网站网页实时翻译软件
  • 怎么在网上做公司网站湖南网站设计方案
  • 化妆品网站建设的设计思路建筑工程类网站
  • 网站开发国内外研究背景注册网页版
  • asp.net 网站开发架构和县网站制作
  • 海口建站模板厂家crm系统解决方案
  • 合肥自助建站外贸人常去的网站
  • 北京酷站科技有限公司做购物网站小图标
  • 湖北营销网站建设设计网站主服务器地址
  • 服装网站设计欣赏wordpress阿里云卡死了
  • 娄底网站建设设计知乎免费阅读网站
  • wordpress网站收录插件网站搜索栏怎么做
  • 我爱做衣服网站如何优化自己的网站
  • 胶州市网站建设形容网站做的好
  • 门户网站建设先进性wordpress实现选择多标签页