一、数据类型
- TensorFlow本质上是一个深度学习的科学计算库,这个库的主要数据类型为张量,所有的运算都是基于张量数据进行的操作,跟复杂的网络模型也只是一些基础运算的组合拼接,只有深入理解基本的张量运算,才能在各种深度学习的网络模型中游刃有余,开发出价值、有创意的算法模型。
- TensorFlow数据类型的种类
- 数值类型
//数字类型 var x = tf.Variable(10,name:"test"); - 字符串类型
//字符串类型 var str = tf.Variable("xiaofang", name: "carcha",dtype: tf.@string); - 布尔类型
//bool 类型 var bol = tf.Variable(true);
- 数值类型
二、张量详解
- 详解
- 张量类似于Numpy中N为数组对象NDArray,TensorFlow中数据的基本单位就是张量。二者都是多维数组的概念。我们可以使用张量表示标量 (0维数组),向量(1维数组),矩阵(2维数组)。
- 条件
- C# 控制台应用程序
- 安装NuGet包
- 步骤
- 安装NuGet包
Microsoft.ML Microsoft.ML.ImageAnalytics Microsoft.ML.Vision SciSharp.TensorFlow.Redist TensorFlow.NET - 实例代码
-
形状获取
-
方式一
var x = tf.constant(new[,] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }); Console.WriteLine(Enumerable.SequenceEqual(new[] { 2,4},x.shape));上述结果返回为:true,张量的属性shape通过返回整形1维数组的方式显示张量的形状;如图:

-
方式二
//获取形状 【通过Tensorflow.Binding封装的print()输出形状】 var x = tf.constant(new[,] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }); print(x.shape);返回结果为:[2,4],如图:

-
-
类型获取
var x = tf.constant(new[,] { { 1,2,3,4},{ 5,6,7,8} } ); print(x.dtype);返回结果:TF_INT32,如图:

-
值获取
var x = tf.constant(new[,] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }); print(x.numpy());返回结果:[[1, 2, 3, 4],[5, 6, 7, 8]],如图:

-
类型转换
- 类型转换就是将张量转换成C#的数据类型[int\float\double]
var x = tf.constant(12); //类型转换 int x1 = (int)x; //数据输出 Console.WriteLine(x1);
- 类型转换就是将张量转换成C#的数据类型[int\float\double]
-
- 安装NuGet包
三、常量与变量
-
概述
- 从行为特性上看,有常量constant和变量Variable两张类型的张量。
- 常量在计算图中不可以被重新赋值;变量在计算图中可以使用assign等算子重新赋值。
-
常量
//tf.bool 布尔类型 var bol = tf.constant(true); Console.WriteLine(bol); //tf.byte类型 var byt = tf.constant(1, tf.byte8); Console.WriteLine(byt); //tf.int32 var i32 = tf.constant(1d); Console.WriteLine(i32); //tf.int64 var i64 = tf.constant(2L); Console.WriteLine(i64); //tf.float类型 var floa = tf.constant(1.23f); Console.WriteLine(floa); //tf.double var doub = tf.constant(2.44); Console.WriteLine(doub); //tf.string var str = tf.constant("hello word"); Console.WriteLine(str);运行结果,如图:

-
变量
var x = tf.Variable(new[,] { { 1,2,3} }); print(x);运行结果如图:

四、字符串的常见操作
-
TensorFlow.NET中也有专门的创建、转换和截取等常见的字符串操作。
-
通过byte创建字符串
var str = tf.constant(new byte[] {0x41,0x42,0xd8,0xff },tf.@string); print(str);运行结果如图:

-
通过numpy()创建字符串
- numpy()函数可以转换字符串的值,代码如下:
运行结果如图:var tf_str = tf.constant(new byte[] {0x41,0x42,0xd8,0xff },tf.@string); var str = tf_str.numpy(); print(str);

- numpy()函数可以转换字符串的值,代码如下:
-
通过tf.string.substr()方法截取字符串
-
使用tf.string.substr()函数可以截取字符串,代码如下:
var tf_str = tf.constant("hello word"); //var str = tf.strings.substr([张量], [从哪开始截取,索引默认:0], [总共截取几个字符]); var str = tf.strings.substr(tf_str, 0, 5); print(str);运行结果如下:

-
截取字符串参数说明
tf.strings.substr(Tensor input, int pos, int len, string name = null, string @uint = "BYTE"); - 参数1 input:类型Tensor,待截取的输入字符串 - 参数2 pos:类型int,起始位置 - 参数3 len:类型int,截取的长度 - 返回值:类型为Tensor,返回截取后输出的字符串
-
本文详细介绍了TensorFlow.NET中的数据类型,包括数值、字符串和布尔类型,重点阐述了张量的概念,提供了创建、形状获取、类型转换、常量与变量的操作示例,并探讨了字符串的常见操作,如创建、转换和截取。
1645

被折叠的 条评论
为什么被折叠?



