深度学习框架TensorFlow.NET之数据类型及张量2(C#)
环境搭建参考:
深度学习框架TensorFlow.NET环境搭建1(C#)-CSDN博客
由于本文作者水平有限,如有写得不对的地方,往指出
声明变量:tf.Variable
声明常量:tf.constant
下面通过代码的方式进行学习
一 数据类型学习
1.1 数据类型输出及运算(包括变量及常量的声明及操作)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Tensorflow.Binding;
using Tensorflow;namespace TensorFlowNetDemo
{class Program{static void Main(string[] args){ResourceVariable intVar = tf.Variable<int>(10, name: "int变量");ResourceVariable floatVar = tf.Variable<float>(1.2f, name: "float变量");//字符串的值不能出现中文,不然会报错ResourceVariable strVar = tf.Variable<string>("Hello World", name: "字符串变量");ResourceVariable boolVar = tf.Variable<bool>(false, name: "bool变量");Tensor number1 = tf.constant(2,name:"常量2名称");Tensor number2 = tf.constant(3,name:"常量2名称");Tensor addResult = tf.add(number1, number2);Tensor addResult2= tf.add(intVar, number1);Tensor addResult3 = tf.add(intVar.numpy(), number1); //int类型和int类型相加正常//Tensor addResult4 = tf.add(floatVar, number1); float类型和int类型相加会报错Console.WriteLine("intVar数值为:" + intVar.numpy()+ " 变量名为:"+intVar.Name);Console.WriteLine("floatVar数值为:" + floatVar.numpy() + " 变量名为:" + floatVar.Name);Console.WriteLine("strVar数值为:" + strVar.numpy() + " 变量名为:" + strVar.Name);Console.WriteLine("boolVar数值为:" + boolVar.numpy() + " 变量名为:" + boolVar.Name);Console.WriteLine("addResult数值为:" + addResult.numpy());Console.WriteLine("addResult2数值为:" + addResult2.numpy());Console.WriteLine("addResult3数值为:" + addResult3.numpy());Console.Read();}}
}
通过tf.Variable<int>(10, name: "int变量")声明了一个值为10,名为'int变量'的整形变量
通过tf.Variable<string>("Hello World", name: "字符串变量")声明了一个值为Hello World,名为'字符串变量'的字符串变量,注意字符串的值不能出现中文,不然会报错
其它的数据类型的声明方式类似
通过tf.constant(2,name:"常量2名称")声明了一个值为2,名为'常量2名称'的整型常量
注意:tf.add相加函数,对应的两个参数的数据类型必须要保持一致,不然会报错。
如:tf.add(number1, number2)是对number1和number2的值相加,可以相加,都是int类型
tf.add(floatVar, number1)不能相加,因为floatVar是float类型,而number2是int类型
程序运行的结果如下图:
1.2 数据类型输入
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Tensorflow.Binding;
using Tensorflow;namespace TensorFlowNetDemo
{class Program{static void Main(string[] args){ResourceVariable intVar = tf.Variable<int>(10, name: "int变量");ResourceVariable floatVar = tf.Variable<float>(1.2f, name: "float变量");//字符串的值不能出现中文,不然会报错ResourceVariable strVar = tf.Variable<string>("Hello World", name: "字符串变量");ResourceVariable boolVar = tf.Variable<bool>(false, name: "bool变量");Tensor number1 = tf.constant(2,name:"常量2名称");Tensor number2 = tf.constant(3,name:"常量2名称");Tensor addResult = tf.add(number1, number2);Tensor addResult2= tf.add(intVar, number1);Tensor addResult3 = tf.add(intVar.numpy(), number1); //int类型和int类型相加正常//Tensor addResult4 = tf.add(floatVar, number1); float类型和int类型相加会报错Console.WriteLine("intVar的数据类型为:" + intVar.dtype);Console.WriteLine("floatVar的数据类型为:" + floatVar.dtype);Console.WriteLine("strVar的数据类型为:" + strVar.dtype);Console.WriteLine("boolVar的数据类型为:" + boolVar.dtype);Console.WriteLine("addResult的数据类型为:" + addResult.dtype);//当然也可以使用print进行输出print("使用print函数输出intVar数值为:" + intVar.numpy() + " 变量名为:" + intVar.Name);Console.Read();}}
}
变量或者标量的dtype属性标识该变量或者标量的数据类型
程序运行结果如下:
1.3 声明二维数组变量
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Tensorflow.Binding;
using Tensorflow;namespace TensorFlowNetDemo
{class Program{static void Main(string[] args){//使用变量声明一维数组,2行4列的一维数组ResourceVariable array = tf.Variable(new[,] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } });Console.WriteLine("二维数组输出为:" + array.numpy());Console.WriteLine("二维数组的数据类型为:" + array.dtype);Console.Read();}}
}
代码中声明了一个2行4列的二维数组
代码运行结果如下:
1.4 形状输出
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Tensorflow.Binding;
using Tensorflow;namespace TensorFlowNetDemo
{class Program{static void Main(string[] args){ResourceVariable intVar = tf.Variable<int>(10, name: "int变量");Tensor number1 = tf.constant(2, name: "常量2名称");Tensor number2 = tf.constant(3, name: "常量2名称");Tensor addResult = tf.add(number1, number2);//使用变量声明一维数组,2行4列的二维数组ResourceVariable array = tf.Variable(new[,] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } });//shape输出Console.WriteLine("intVar的shape输出:" + intVar.shape);Console.WriteLine("addResult的shape输出:" + intVar.shape);Console.WriteLine("二维数据的shape为:" + array.shape);Console.Read();}}
}
输出结果如下:
二 张量
TensorFlow中数据的基本单位为张量,前面例子中我们操作的变量或者常量都是属于张量的一种,我们可以使用张量表示标量(0维度数组)、向量(1维数组)、矩阵(2维数组)、RBG图像(3维数组)、视频(4维数组,多了时间维度)等n维数组
2.1 各个维度的张量表示方式
2.1.1 标量(0维数组)的张量表示如下:
ResourceVariable intVar = tf.Variable<int>(10, name: "int变量");
Tensor number1 = tf.constant(2, name: "常量2名称");
2.1.2 向量(1维的数组)的张量表示如下:
ResourceVariable var1 = tf.Variable(new[]{1,2,3});
Tensor var2 = tf.constant(new[] { 2,3,4 });
2.1.3 矩阵(2维数组)的张量表示如下:
ResourceVariable array = tf.Variable(new[,] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } });
2.1.4 RGB图像(3维数组)的张量表示如下:
ResourceVariable array1 = tf.Variable(new[,,] { { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } } , {{ 11, 22, 33, 4 }, { 55, 66, 77, 88 } } });
4维度的就偷个懒,就不写了,类似
2.2 可以通过张量的shape属性获取张量形状、dtype属性获取张量数据类型,方法numpy获取张量的值,代码例子如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Tensorflow.Binding;
using Tensorflow;namespace TensorFlowNetDemo
{class Program{static void Main(string[] args){ResourceVariable intVar0 = tf.Variable<int>(10, name: "int变量");ResourceVariable array1 = tf.Variable(new[] { 1, 2, 3, 4 });//使用变量声明一维数组,2行4列的二维数组ResourceVariable array2 = tf.Variable(new[,] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } });ResourceVariable array3 = tf.Variable(new[,,] { { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } } , {{ 11, 22, 33, 4 }, { 55, 66, 77, 88 } } });Console.WriteLine("0维张量的形状为:"+ intVar0.shape+" 数据类型为:"+ intVar0.dtype+" 值为:"+ intVar0.numpy());Console.WriteLine("1维张量的形状为:" + array1.shape + " 数据类型为:" + array1.dtype + " 值为:" + array1.numpy());Console.WriteLine("2维张量的形状为:" + array2.shape + " 数据类型为:" + array2.dtype + " 值为:" + array2.numpy());Console.WriteLine("3维张量的形状为:" + array3.shape + " 数据类型为:" + array3.dtype + " 值为:" + array3.numpy());Console.Read();}}
}
运行结果如下:
好了,本文内容到此结束
相关文章:

深度学习框架TensorFlow.NET之数据类型及张量2(C#)
环境搭建参考: 深度学习框架TensorFlow.NET环境搭建1(C#)-CSDN博客 由于本文作者水平有限,如有写得不对的地方,往指出 声明变量:tf.Variable 声明常量:tf.constant 下面通过代码的方式进行学…...

Pandas指定多列组合形成新列
目录 1、数据准备2、多列组合 1、数据准备 df pd.DataFrame({first_name: [A, B], last_name: [a, b]}) print(df.to_string()) first_name last_name 0 A a 1 B b 2、多列组合 2.1、方式一:使用cat() df[full_name] df[firs…...

硕鼠——视频下载利器
相信很多做自媒体、剪辑的同志们,经常会遇到一个棘手的问题:剪辑的素材从何而来。诸如很多高燃混剪的视频,往往需要多个影视作品中的原画来进行二次创作,可是这些视频素材从何而来呢? 有小伙伴们提出,通过录…...

Android 13.0 Launcher3 app图标长按去掉应用信息按钮
1.前言 在13.0的rom定制化开发中,在Launcher3定制化开发中,对Launcher3的定制化功能中,在Launcher3的app列表页会在长按时,弹出微件和应用信息两个按钮,点击对应的按钮跳转到相关的功能页面, 现在由于产品需求要求禁用应用信息,不让进入到应用信息页面所以要去掉应用信息…...

10 DETR 论文精读【论文精读】End-to-End Object Detection with Transformers
目录 DETR 这篇论文,大家为什么喜欢它?为什么大家说它是一个目标检测里的里程碑式的工作?而且为什么说它是一个全新的架构? 1 题目 2摘要 2.1新的任务定义:把这个目标检测这个任务直接看成是一个集合预测的问题 2.…...

高数笔记05:不定积分与定积分
图源:文心一言 时间比较紧张,仅导图~~🥝🥝 第1版:查资料、画导图~🧩🧩 参考资料:《高等数学 基础篇》武忠祥 🐳目录 🐳目录 🐳不定积分 &#…...

【代码随想录】算法训练计划13
1、347. 前 K 个高频元素 题目: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] 思路: sort.Slice学习一下,其实还有so…...

Python图像处理之OpenCV模块
Python图像处理 1、OpenCV模块简介2、OpenCV模块图像常用操作3、PIL与OpenCV图像格式转换4、图像识别应用案例4.1、人脸识别4.2、车牌识别4.3、文本识别1、OpenCV模块简介 OpenCV(Open Source Computer Vision Library)是一个基于BSD许可(开源)发行的跨平台计算机视觉库,主…...

动态规划-丑数
** 描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第 n个丑数。 数据范围: 0≤n≤2000 要求&#x…...

【MogDB/openGauss的三种函数稳定性关键字】
一、ORACLE中的类似的函数稳定性关键字(DETERMINISTIC) 在ORACLE里,function有着一个DETERMINISTIC参数,它表示一个函数在输入不变的情况下输出是否确定,只要输入的参数一样,返回的结果一定一样的…...

java-对Integer.MAX_VALUE做加法
public static void main(String[] args) {int maxValue Integer.MAX_VALUE;System.out.println("maxValue1 " (maxValue1));System.out.println("maxValue2 " (maxValue2));System.out.println("maxValue3 " (maxValue3));}//结果 maxVa…...

【学习笔记】[COCI2018-2019#1] Teoretičar
首先,可以发现 C C C等于所有点度数的最大值,我们能用到的颜色数目为 2 x ≥ C 2^x\ge C 2x≥C。 考虑分治,将边集划分为 E E 1 E 2 EE_1E_2 EE1E2,使得 E 1 , E 2 E_1,E_2 E1,E2中点度数的最大值都不超过 2 x − 1 2^…...

64位Office API声明语句第112讲
跟我学VBA,我这里专注VBA, 授人以渔。我98年开始,从源码接触VBA已经20余年了,随着年龄的增长,越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友,都来学习VBA,利用VBA,起码可以提高…...

C++ day3作业
1> 思维导图 2> 自己封装一个矩形类(Rect),拥有私有属性:宽度(width)、高度(height), 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void s…...

蓝桥杯官网填空题(方格计数)
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 如下图所示,在二维平面上有无数个 11 的小方格。 我们以某个小方格的一个顶点为圆心画一个半径为 50000 的圆。 你能计算出这个圆里有多少个完整的小方…...

【系统架构设计】计算机公共基础知识: 6 知识产权与标准化
一 知识产权 1 保护对象和范围 法律法规名称保护对象及范围注意事项著作权法著作权 文学、绘画、摄影等作品 不需要申请,作品完成就开始保护。 绘画或摄影作品原件出售(赠予)著作权归还原作者,原件拥有者有所有权和展览权。 软件著作权法 计算机软件保护条例 软件著作权 软…...

【新】致远OA从前台XXE到RCE漏洞分析
0x01 前言 致远OA是目前国内最流行的OA系统之一,前几年也曾爆出过多个安全漏洞。致远官方一直对修复漏洞的态度十分积极,目前能有效利用的致远漏洞已经很少了。 和我们之前分享过的通达OA的漏洞类似,这类主流OA系统现在想要直接一步达到RCE的…...

宠物领养系统jsp+servlet+mysql
设计不同用户的操作权限、注册和登录方法。 管理员可以在管理员管理、用户管理、宠物管理、评论管理、团队活动管理、志愿者的申请等等模块中进行查询、添加、删除、修改。 管理员可以在领养管理中通过领养时间查询所有宠物被领养的信息,修改是否同意领养宠物&#…...

MySQL 数据库安全性练习题
数据库安全性 一、实验目的 (1)熟悉通过MySQL对数据进行安全性控制 二、实验环境 Windows 11 MySQL Navicat 三、实验内容 今有以下两个关系模式: 职工(职工号,姓名,年龄,职务,工…...

如何使用Node.js快速创建HTTP服务器并实现公网访问本地Server
文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation࿰…...

zigbee路灯无线通讯机制
zigbee路灯无线通讯机制 wang20160630 前言 目前路灯上通讯主要有电力载波和无线通讯;各有利弊,众说纷纭;本文不对两种技术进行比较,也不讨论哪种好,毕竟同种通讯模块,有的开发出来稳定,有的…...

asp.net docker-compose添加kafka和redis和zookeeper
docker-compose.yml添加 redis:image: redis:alpinekafka:image: "bitnami/kafka:3.1.1"depends_on:- zookeeperzookeeper:image: "bitnami/zookeeper:3.5.10" docker-compose.override.yml添加 redis:ports:- "6379"kafka:links: - zookeepere…...

2024上海国际人工智能展(CSITF)“创新驱动发展·科技引领未来”
人工智能(Artificial Intelligence,AI)作为当今世界科技发展的关键领域之一,正不断推动着各行各业的创新和变革。作为世界上最大的消费市场之一,中国正在积极努力将AI技术与产业融合并加速推广应用。在这个背景下&…...

汽车标定技术(三)--XCP协议如何支持测量功能
目录 1. 概述 2. 测量方式 -- Poll 3. 测量方式 -- DAQ 3.1 ODT概念模型 3.2 DAQ List概念 3.3 ODT 绝对编号和相对编号 3.4 静态DAQ和动态DAQ模式 (1)静态DAQ (2)动态DAQ 4.小结 1. 概述 在该系列的首篇文章汽车标定技…...

[c++]你最喜爱的stringstream和snprintf性能深入剖析
最近写一个程序中两个差不多的模块,一个使用了snprintf输出中间数据,另一个偷懒使用stringstream。结果你猜怎么着?居然压帧了!!到底是谁拖了性能的后退? 来自阿里云的性能分析实验 我上网一搜࿰…...

windows 用vs创建cmake工程并编译opencv应用项目生成exe流程简述
目录 前言一、安装opencv(1)下载(2)双击安装(3)环境变量和system文件夹设置 二、打开vs创建项目三、编辑cpp,.h,cmakelist.txt文件(1)h文件(2&…...

QML 仪表盘小示例
本次项目已发布在CSDN->GitCode,下载方便,安全,可在我主页进行下载即可,后面的项目和素材都会发布这个平台。 个人主页:https://gitcode.com/user/m0_45463480怎么下载:在项目中点击克隆,windows:zip linux:tar.gz tar # .pro TEMPLATE = appTARGET = dialcontrol#…...

力扣206. 反转链表
题目: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输出:[2,1] 示例 3:…...

深度学习之基于Tensorflow卷积神经网络花卉识别系统
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习是一种机器学习方法,它通过模拟人脑神经网络的结构和功能来实现对数据的自动分析和学习。卷积神…...

leetcode链表
这几天手的骨裂稍微好一点了,但是还是很疼,最近学校的课是真多,我都没时间做自己的事,但是好在今天下午是没有课的,我也终于可以做自己的事情了。 今天分享几道题目 移除链表元素 这道题我们将以两种方法开解决&…...