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

深度学习框架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#)

环境搭建参考&#xff1a; 深度学习框架TensorFlow.NET环境搭建1&#xff08;C#&#xff09;-CSDN博客 由于本文作者水平有限&#xff0c;如有写得不对的地方&#xff0c;往指出 声明变量&#xff1a;tf.Variable 声明常量&#xff1a;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、方式一&#xff1a;使用cat() df[full_name] df[firs…...

硕鼠——视频下载利器

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

Android 13.0 Launcher3 app图标长按去掉应用信息按钮

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

10 DETR 论文精读【论文精读】End-to-End Object Detection with Transformers

目录 DETR 这篇论文&#xff0c;大家为什么喜欢它&#xff1f;为什么大家说它是一个目标检测里的里程碑式的工作&#xff1f;而且为什么说它是一个全新的架构&#xff1f; 1 题目 2摘要 2.1新的任务定义&#xff1a;把这个目标检测这个任务直接看成是一个集合预测的问题 2.…...

高数笔记05:不定积分与定积分

图源&#xff1a;文心一言 时间比较紧张&#xff0c;仅导图~~&#x1f95d;&#x1f95d; 第1版&#xff1a;查资料、画导图~&#x1f9e9;&#x1f9e9; 参考资料&#xff1a;《高等数学 基础篇》武忠祥 &#x1f433;目录 &#x1f433;目录 &#x1f433;不定积分 &#…...

【代码随想录】算法训练计划13

1、347. 前 K 个高频元素 题目&#xff1a; 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] 思路&#xff1a; sort.Slice学习一下&#xff0c;其实还有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的数称作丑数&#xff08;Ugly Number&#xff09;。例如6、8都是丑数&#xff0c;但14不是&#xff0c;因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第 n个丑数。 数据范围&#xff1a; 0≤n≤2000 要求&#x…...

【MogDB/openGauss的三种函数稳定性关键字】

一、ORACLE中的类似的函数稳定性关键字&#xff08;DETERMINISTIC&#xff09; 在ORACLE里&#xff0c;function有着一个DETERMINISTIC参数&#xff0c;它表示一个函数在输入不变的情况下输出是否确定&#xff0c;只要输入的参数一样&#xff0c;返回的结果一定一样的&#xf…...

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

首先&#xff0c;可以发现 C C C等于所有点度数的最大值&#xff0c;我们能用到的颜色数目为 2 x ≥ C 2^x\ge C 2x≥C。 考虑分治&#xff0c;将边集划分为 E E 1 E 2 EE_1E_2 EE1​E2​&#xff0c;使得 E 1 , E 2 E_1,E_2 E1​,E2​中点度数的最大值都不超过 2 x − 1 2^…...

64位Office API声明语句第112讲

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

C++ day3作业

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

蓝桥杯官网填空题(方格计数)

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

【系统架构设计】计算机公共基础知识: 6 知识产权与标准化

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

【新】致远OA从前台XXE到RCE漏洞分析

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

宠物领养系统jsp+servlet+mysql

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

MySQL 数据库安全性练习题

数据库安全性 一、实验目的 &#xff08;1&#xff09;熟悉通过MySQL对数据进行安全性控制 二、实验环境 Windows 11 MySQL Navicat 三、实验内容 今有以下两个关系模式&#xff1a; 职工&#xff08;职工号&#xff0c;姓名&#xff0c;年龄&#xff0c;职务&#xff0c;工…...

如何使用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&#xff0…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

OpenGL-什么是软OpenGL/软渲染/软光栅?

‌软OpenGL&#xff08;Software OpenGL&#xff09;‌或者软渲染指完全通过CPU模拟实现的OpenGL渲染方式&#xff08;包括几何处理、光栅化、着色等&#xff09;&#xff0c;不依赖GPU硬件加速。这种模式通常性能较低&#xff0c;但兼容性极强&#xff0c;常用于不支持硬件加速…...

[特殊字符] Spring Boot底层原理深度解析与高级面试题精析

一、Spring Boot底层原理详解 Spring Boot的核心设计哲学是约定优于配置和自动装配&#xff0c;通过简化传统Spring应用的初始化和配置流程&#xff0c;显著提升开发效率。其底层原理可拆解为以下核心机制&#xff1a; 自动装配&#xff08;Auto-Configuration&#xff09; 核…...