机器学习|什么是张量

1、什么是张量

张量 (tensor) 是一种多维数组,用于表示物理量在不同坐标系下的变换关系。在现代数学中,张量被视为多重线性函数,即对于每个参数,它输出一个数值。
张量有许多不同的定义,但它们的共同特征是它们可以处理多维数据,并且具有与矩阵和向量类似的运算规则。

机器学习|什么是张量

张量

2、张量的阶

张量的阶(rank)表征了张量的维度,但是和矩阵的秩不一样,它表示张量维度的质量;阶为1的张量等价于向量,如:[1,2,3];阶为2的张量等价于矩阵,如:[[1,2,3], [3,4,5], [1,3,4]];依次类推…

代码表示
0 1000
1 [2, 4, 100]
2 [[1,2,3], [3,4,5], [1,3,4]]
3 [[[1], [3], [1000]], [[3], [1000], [2]]]
n

如何获取张量的元素

import tensorflow.compat.v1 as tf
tens = tf.constant([[[1,2],[2,3]],[[3,4],[4,5]]])
se = tf.session()
print(se.run(tens)[1,1,0])

输出:

4

3、张量的形状和数据类型

描述张量的维度:阶,形状和维数,

  • 二维张量(2D Tensor):二维张量由一组二维元素组成,每个元素都是一个张量类型。例如:一个张量可以表示一个二维数组,其中每个元素是一个实数。
  • 三维张量(3D Tensor):三维张量由一组三维元素组成,每个元素也是一个张量类型。例如:一个张量可以表示一个三维数组,其中每个元素是一个实数、一个标量和一个维度。
  • 多维数组(多维数组):多维数组是一个张量,它由一组多维元素组成。例如:一个多维数组可以表示一个二维数组,其中每个元素是一个实数。
import tensorflow.compat.v1 as tf
tens = tf.constant([[[1,2],[2,3]],[[3,4],[4,5]]])
print(tens)

输出:

Tensor("Const_2:0", shape=(222), dtype=int32)
python类型 代码表示
tf.float32 32位浮点
tf.float64 64位浮点
tf.int8 8位有符号整数
tf.int16 16位有符号整数
tf.int32 32位有符号整数
tf.int64 64位有符号整数
tf.uint8 8位无符号整数
tf.string 可变长度的字节数组
tf.bool 布尔类型

4、创建张量

使用numpy创建张量,如下:

import numpy as np
import tensorflow.compat.v1 as tf
x = tf.constant(np.random.random(32).astype(np.float32))
y = tf.constant([123])
print(x, y)

输出:

Tensor("Const_5:0", shape=(32,), dtype=float32) Tensor("Const_6:0", shape=(3,), dtype=int32)

5、张量计算

张量支持各种计算,如转置,乘法,获取行列式,逆,分割,序列等。

1)比如张量的积,计算方法如下:

import tensorflow.compat.v1 as tf
sess = tf.InteractiveSession() # 获取默认的session,不需要显示传递session
x = tf.constant([
    [253-5],
    [03-25],
    [4353],
    [6140]
])
y = tf.constant([
    [-2-71-1],
    [6515],
    [-42-33],
    [-1-6-40]
])
tf.matmul(x, y).eval()

输出:

array([[ 19,  47,  18,  32],
       [ 21-19-11,   9],
       [-13-21-20,  26],
       [-22-29,  -5,  11]], dtype=int32)

2)比如张量的序列计算,计算方法如下:

sess = tf.InteractiveSession()
x = tf.constant([
    [253-5],
    [03-25],
    [4353],
    [6140]
])
y = tf.constant([
    [-2-71-1],
    [6515],
    [-42-33],
    [-1-6-40]
])
tf.argmin(x, 1).eval()
tf.argmax(y, 1).eval()

输出:

array([3, 2, 1, 3])
array([2, 0, 3, 3])

6、处理csv文件

import tensorflow.compat.v1 as tf
sess = tf.InteractiveSession() 
dataset = tf.data.TextLineDataset('test.csv').skip(1)

对于后面的.skip()方法,传入的参数决定跳过的行数,因为csv文件往往都带有一行header,这个header内容往往和下面的数据无关,需要忽略,所以我们使用.skip()方法来实现这一目的。

7、处理图片数据

图片处理是tensorflow最经常用到的,提供了丰富的API,可以执行图像编码处理,图像大小调整,图像翻转,图像色彩调整等。

image_raw_data = tf.gfile.FastGFile(
    "../tensor.png"'r').read()

with tf.Session() as sess:
    img_data = tf.image.decode_png(image_raw_data)
    print(img_data.eval())

原文始发于微信公众号(周末程序猿):机器学习|什么是张量

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/169397.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!