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

福田区网站建设北京新闻媒体

福田区网站建设,北京新闻媒体,网站吗,网站建设模板哪家好源代码作者#xff1a;https://github.com/zjhellofss 本文仅作为个人学习心得领悟 #xff0c;将原作品提炼#xff0c;更加适合新手 什么是推理框架#xff1f; 深度学习推理框架用于对已训练完成的神经网络进行预测#xff0c;也就是说#xff0c;能够将深度训练框…源代码作者https://github.com/zjhellofss 本文仅作为个人学习心得领悟 将原作品提炼更加适合新手 什么是推理框架 深度学习推理框架用于对已训练完成的神经网络进行预测也就是说能够将深度训练框架例如Pytorch、Tensorflow中定义的算法移植到中心侧和端侧并高效执行。与训练框架不同的是深度学习推理框架没有梯度反向传播功能因为算法模型文件中的权重系数已经被固化推理框架只需要读取、加载并完成对新数据的预测即可。 模型加载阶段 训练完成的模型被放置在两个文件中一个是模型定义文件一个是权重文件。 ONNX文件是将模型定义文件和权重文件合二为一的文件格式。 关于维度的预备知识 在Tensor张量中共有三维数据进行顺序存放分别是Channels(维度)Rows(行高), Cols(行宽) 三维矩阵我们可以看作多个连续的二维矩阵组成最简单的方法就是std::vectorstd::vectorstd::vectorfloat但是这种方法非常不利于数据的访问尤其是内存不连续的问题 、修改以及查询特别是在扩容的时候非常不方便。不能满足使用需求 不连续会造成数组访问慢的问题在这里我用chrono做了测试 #includeiostream #include gtest/gtest.h #include armadillo #include glog/logging.h #include vector #include chrono #define TICK(x) auto bench_##x std::chrono::steady_clock::now(); #define TOCK(x) std::cout #x : std::chrono::duration_caststd::chrono::durationdouble(std::chrono::steady_clock::now() - bench_##x).count() *1000000 ns std::endl; using namespace std; int m 10000 , n 10000 , channel 2; TEST(test_compare_vector , speed2D){LOG(INFO)Test of vector cubeendl;vectorvectorfloat matA (m , vectorfloat(n , 1));TICK(2D);for (int i 0; i matA.size(); i){for (int j 0; j matA[0].size(); j){matA[i][j] matA[i][j]*matA[j][i];}}TOCK(2D);arma::fcube matB( m , n , 1 , arma::fill::ones);TICK(cube);for (int i 0; i m; i){for (int j 0; j n; j){matB(i , j , 0) matB(i , j , 0)*matB( j , i , 0);}}TOCK(cube);} 因此综合考虑灵活性和开发的难易度作者在这里以Armadillo类中的arma::mat(矩阵 matrix)类和arma::cube 作为数据管理(三维矩阵)类来实现Tensor 库中类的主体一个cube由多个matrix组成cube又是Tensor类中的数据实际管理者。一块连续的大内存分配开始写一个tensor工作量会特别大折中 作者设计的类是以arma::cube为基础实现了Tensor类我们主要是提供了更方便的访问方式和对外接口。  上图即为Tensor与cube的对应关系。 cube一般有多个维度在channel维度上有多个matrix。 arma::cube(2,5,3)表示当前的三维矩阵共有2个矩阵构成每个矩阵都是5行3列的。如果放在我们项目中会以这形式提供 Tensor tensor(2,5,3) 下图是这种情况下的三维结构图可以看出一个Cube一共有两个Matrix也就是共有两个Channel。一个Channel放一个Matrix. Matrix的行宽均为Rows和Cols. Tensor类方法总览 这里的很多都不需要我们重新去造轮子 比如Fill(float value)就可以直接调用cube里的fill void Tensorfloat::Fill(float value) {CHECK(!this-data_.empty());this-data_.fill(value); }再比如这个at float Tensorfloat::at(uint32_t channel, uint32_t row, uint32_t col) {CHECK_LT(row, this-rows());CHECK_LT(col, this-cols());CHECK_LT(channel, this-channels());return this-data_.at(row, col, channel); } 再难一些的就需要我们自己去实现了 Fill(vector)方法实现 TEST(test_tensor, fill) {using namespace kuiper_infer;Tensorfloat tensor(3, 3, 3);ASSERT_EQ(tensor.channels(), 3);ASSERT_EQ(tensor.rows(), 3);ASSERT_EQ(tensor.cols(), 3);std::vectorfloat values;for (int i 0; i 27; i) {values.push_back((float) i);}tensor.Fill(values);LOG(INFO) tensor.data();int index 0;for (int c 0; c tensor.channels(); c) {for (int r 0; r tensor.rows(); r) {for (int c_ 0; c_ tensor.cols(); c_) {ASSERT_EQ(values.at(index), tensor.at(c, r, c_));index 1;}}}LOG(INFO) Test1 passed!; } padding功能实现 TEST(test_tensor, padding1) {using namespace kuiper_infer;Tensorfloat tensor(3, 3, 3);ASSERT_EQ(tensor.channels(), 3);ASSERT_EQ(tensor.rows(), 3);ASSERT_EQ(tensor.cols(), 3);tensor.Fill(1.f); // 填充为1tensor.Padding({1, 1, 1, 1}, 0); // 边缘填充为0ASSERT_EQ(tensor.rows(), 5);ASSERT_EQ(tensor.cols(), 5);int index 0;// 检查一下边缘被填充的行、列是否都是0for (int c 0; c tensor.channels(); c) {for (int r 0; r tensor.rows(); r) {for (int c_ 0; c_ tensor.cols(); c_) {if (c_ 0 || r 0) {ASSERT_EQ(tensor.at(c, r, c_), 0);}index 1;}}}LOG(INFO) Test2 passed!; } 再谈谈Tensor类中数据的排布 我们以具体的图片作为例子来讲讲Tensor中数据管理类arma::cube的数据排布方式Tensor类是arma::cube对外更方便的接口所以说armadillo::cube怎么管理内存的Tensor类就是怎么管理内存的。希望大家的能理解到位。如下图中的一个CubeCube的维度是2,每个维度上存放的是一个Matrix一个Matrix中的存储空间被用来存放一张图像lena 。一个框内channel是一个MatrixMatrix1存放在Cube第1维度(channel 1)上Matrix2存放在Cube的第2维度上(channel 2). Matrix1和Matrix2的Rows和Cols均代表着图像的高和宽在本例中就是512和384。
http://www.dnsts.com.cn/news/212069.html

相关文章:

  • 微信小程序网站模板做民宿上几家网站好
  • seo技巧是什么意思星巴克seo网络推广
  • 建设校园网站的好处如何把page转换为wordpress
  • 外贸大型门户网站制作中交路建子公司最新排名
  • 网站代码加密百度网站的设计风格
  • 做淘客网站需要什么零基础怎么学网页设计
  • 深圳附近做个商城网站多少钱做防腐木花架的网站
  • 江门网站制作服务做逆战网站的名字
  • 做积分商城网站暴雪娱乐
  • 医院网站建设的意义做药的常用网站
  • 莆田网站建设平台郑州心理咨询中心
  • 京东网站建设过程wordpress php教程 pdf
  • 上海网站建设 公司案例c 做的网站怎么上传
  • 美丽乡村网站建设模板跨境电商工具类产品的网站
  • 北京网站建设出名 乐云践新沈阳什么行业做网站的最多
  • 网站建设保密协议搜索seo引擎
  • 无锡哪里有做网站的公司宁波seo排名公司
  • 网站建设的搜索功能娄底建设网站制作
  • 淘宝是行业门户网站的盈利模式是什么网站建设规定
  • 旅游网站设计的建设原则有做浏览单的网站
  • 市政工程中标查询网南通网站排名优化
  • 用vue做网站一般用什么组件库青岛高端网站建设
  • 医疗类网站备案眯眯扑克app哪个公司开发
  • 仿糗事百科网站seo外链建设的方法
  • 网站排名与什么有关系中国建筑工程门户商城
  • 湖南省建设厅网站官网网站子站怎么做、
  • 电子商务网站建设考纲温州网站定制
  • 做cg的网站如何免费注册企业邮箱
  • 免费模板建设网站海口网站开发找千素网
  • 门户网站内容管理建设方案wordpress源码导读