TensorFlow.NET--数据类型与张量详解

本文详细介绍了TensorFlow.NET中的数据类型,包括数值、字符串和布尔类型,重点阐述了张量的概念,提供了创建、形状获取、类型转换、常量与变量的操作示例,并探讨了字符串的常见操作,如创建、转换和截取。

一、数据类型

  • 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);
          

三、常量与变量

  • 概述

    • 从行为特性上看,有常量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);      
      
      运行结果如图:
      在这里插入图片描述
  • 通过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,返回截取后输出的字符串
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值