精华内容
下载资源
问答
  • TensorFlow2.0教程-张量及其操作

    千次阅读 2019-05-13 17:57:33
    TensorFlow2.0教程-张量极其操作 完整tensorflow2.0教程代码请看tensorflow2.0:中文教程tensorflow2_tutorials_chinese(欢迎star) 更多TensorFlow2.0 入门教程请持续关注本博客:...

    TensorFlow2.0教程-张量及其操作

    本文地址:https://blog.csdn.net/qq_31456593/article/details/90178004

    完整tensorflow2.0教程代码请看tensorflow2.0:中文教程tensorflow2_tutorials_chinese(欢迎star)

    更多TensorFlow2.0 入门教程请持续关注本博客:https://blog.csdn.net/qq_31456593/article/details/88606284

    导入TensorFlow

    运行tensorflow程序,需要导入tensorflow模块。
    从TensorFlow 2.0开始,默认情况下会启用eager模式执行。 这为TensorFlow提供了一个更加互动的前端节。

    from __future__ import absolute_import, division, print_function
    import tensorflow as tf
    

    1 Tensors

    张量是一个多维数组。 与NumPy ndarray对象类似,tf.Tensor对象具有数据类型和形状。 此外,tf.Tensors可以驻留在加速器内存中(如GPU)。 TensorFlow提供了丰富的操作库(tf.add,tf.matmul,tf.linalg.inv等),它们使用和生成tf.Tensors。 这些操作会自动转换原生Python类型,例如:

    print(tf.add(1,2))
    print(tf.add([3,8], [2,5]))
    print(tf.square(6))
    print(tf.reduce_sum([7,8,9]))
    print(tf.square(3)+tf.square(4))
    
    tf.Tensor(3, shape=(), dtype=int32)
    tf.Tensor([ 5 13], shape=(2,), dtype=int32)
    tf.Tensor(36, shape=(), dtype=int32)
    tf.Tensor(24, shape=(), dtype=int32)
    tf.Tensor(25, shape=(), dtype=int32)
    

    每个Tensor都有形状和类型

    x = tf.matmul([[3], [6]], [[2]])
    print(x)
    print(x.shape)
    print(x.dtype)
    
    tf.Tensor(
    [[ 6]
     [12]], shape=(2, 1), dtype=int32)
    (2, 1)
    <dtype: 'int32'>
    

    NumPy数组和tf.Tensors之间最明显的区别是:

    张量可以由加速器内存(如GPU,TPU)支持。
    张量是不可变的。

    NumPy兼容性
    在TensorFlow tf.Tensors和NumPy ndarray之间转换很容易:

    TensorFlow操作自动将NumPy ndarrays转换为Tensors。
    NumPy操作自动将Tensors转换为NumPy ndarrays。
    使用.numpy()方法将张量显式转换为NumPy ndarrays。 这些转换通常很容易的,因为如果可能,array和tf.Tensor共享底层内存表示。 但是,共享底层表示并不总是可行的,因为tf.Tensor可以托管在GPU内存中,而NumPy阵列总是由主机内存支持,并且转换涉及从GPU到主机内存的复制。

    import numpy as np
    ndarray = np.ones([2,2])
    tensor = tf.multiply(ndarray, 36)
    print(tensor)
    # 用np.add对tensorflow进行加运算
    print(np.add(tensor, 1))
    # 转换为numpy类型
    print(tensor.numpy())
    
    tf.Tensor(
    [[36. 36.]
     [36. 36.]], shape=(2, 2), dtype=float64)
    [[37. 37.]
     [37. 37.]]
    [[36. 36.]
     [36. 36.]]
    

    2 GPU加速

    使用GPU进行计算可以加速许多TensorFlow操作。 如果没有任何注释,TensorFlow会自动决定是使用GPU还是CPU进行操作 - 如有必要,可以复制CPU和GPU内存之间的张量。 由操作产生的张量通常由执行操作的设备的存储器支持,例如:

    x = tf.random.uniform([3, 3])
    print('Is GPU availabel:')
    print(tf.test.is_gpu_available())
    print('Is the Tensor on gpu #0:')
    print(x.device.endswith('GPU:0'))
    
    Is GPU availabel:
    False
    Is the Tensor on gpu #0:
    False
    

    设备名称

    Tensor.device属性提供托管张量内容的设备的完全限定字符串名称。 此名称编码许多详细信息,例如正在执行此程序的主机的网络地址的标识符以及该主机中的设备。 这是分布式执行TensorFlow程序所必需的。 如果张量位于主机上的第N个GPU上,则字符串以GPU结尾:。

    显式设备放置(Placement)

    在TensorFlow中,放置指的是如何分配(放置)设备以执行各个操作。 如上所述,如果没有提供明确的指导,TensorFlow会自动决定执行操作的设备,并在需要时将张量复制到该设备。 但是,可以使用tf.device上下文管理器将TensorFlow操作显式放置在特定设备上,例如:

    import time
    def time_matmul(x):
        start = time.time()
        for loop in range(10):
            tf.matmul(x, x)
        result = time.time() - start
        print('10 loops: {:0.2}ms'.format(1000*result))
        
    # 强制使用CPU
    print('On CPU:')
    with tf.device('CPU:0'):
        x = tf.random.uniform([1000, 1000])
        # 使用断言验证当前是否为CPU0
        assert x.device.endswith('CPU:0')
        time_matmul(x)    
    
    # 如果存在GPU,强制使用GPU
    if tf.test.is_gpu_available():
        print('On GPU:')
        with tf.device.endswith('GPU:0'):
            x = tf.random.uniform([1000, 1000])
        # 使用断言验证当前是否为GPU0
        assert x.device.endswith('GPU:0')
        time_matmul(x)  
    
    On CPU:
    10 loops: 1.2e+02ms
    

    3 数据集

    本节使用tf.data.Dataset API构建管道,以便为模型提供数据。 tf.data.Dataset API用于从简单,可重复使用的部分构建高性能,复杂的输入管道,这些部分将为模型的培训或评估循环提供支持。

    创建源数据集
    使用其中一个工厂函数(如Dataset.from_tensors,Dataset.from_tensor_slices)或使用从TextLineDataset或TFRecordDataset等文件读取的对象创建源数据集。 有关详细信息,请参阅TensorFlow数据集指南。

    # 从列表中获取tensor
    ds_tensors = tf.data.Dataset.from_tensor_slices([6,5,4,3,2,1])
    # 创建csv文件
    import tempfile
    _, filename = tempfile.mkstemp()
    print(filename)
    
    with open(filename, 'w') as f:
        f.write("""Line 1
    Line 2
    Line 3""")
    # 获取TextLineDataset数据集实例
    ds_file = tf.data.TextLineDataset(filename)
    
    /tmp/tmpvl0kyn0w
    

    应用转换

    使用map,batch和shuffle等转换函数将转换应用于数据集记录。

    ds_tensors = ds_tensors.map(tf.square).shuffle(2).batch(2)
    ds_file = ds_file.batch(2)
    

    迭代

    tf.data.Dataset对象支持迭代循环记录:

    print('ds_tensors中的元素:')
    for x in ds_tensors:
        print(x)
    # 从文件中读取的对象创建的数据源
    print('\nds_file中的元素:')
    for x in ds_file:
        print(x)
    
    ds_tensors中的元素:
    tf.Tensor([36 25], shape=(2,), dtype=int32)
    tf.Tensor([16  9], shape=(2,), dtype=int32)
    tf.Tensor([4 1], shape=(2,), dtype=int32)
    
    ds_file中的元素:
    tf.Tensor([b'Line 1' b'Line 2'], shape=(2,), dtype=string)
    tf.Tensor([b'Line 3'], shape=(1,), dtype=string)
    
    
    
    展开全文
  • 张量

    2020-12-01 14:34:52
    也许你在NASA教程中看到它,仍然不知道它在说些什么?问题在于大多数讲述张量的指南,都假设你已经掌握他们描述数学的所有术语。 别担心! 我像小孩子一样讨厌数学,所以如果我能明白,你也可以!我们只需要用简单的...

    也许你已经下载了TensorFlow,而且准备开始着手研究深度学习。但是你会疑惑:TensorFlow里面的Tensor,也就是“张量”,到底是个什么鬼?也许你查阅了维基百科,而且现在变得更加困惑。也许你在NASA教程中看到它,仍然不知道它在说些什么?问题在于大多数讲述张量的指南,都假设你已经掌握他们描述数学的所有术语。

    别担心!

    我像小孩子一样讨厌数学,所以如果我能明白,你也可以!我们只需要用简单的措辞来解释这一切。所以,张量(Tensor)是什么,而且为什么会流动(Flow)?

    0维张量/标量 标量是一个数字

    1维张量/向量 1维张量称为“向量”。

    2维张量 2维张量称为矩阵

    3维张量 公用数据存储在张量 时间序列数据 股价 文本数据 彩色图片(RGB)

    让我们先来看看tensor(张量)是什么?

    张量=容器

    张量是现代机器学习的基础。它的核心是一个数据容器,多数情况下,它包含数字,有时候它也包含字符串,但这种情况比较少。因此把它想象成一个数字的水桶。

    张量有多种形式,首先让我们来看最基本的形式,你会在深度学习中偶然遇到,它们在0维到5维之间。我们可以把张量的各种类型看作这样(对被题目中的猫咪吸引进来小伙伴说一句,不要急!猫咪在后面会出现哦!):

    0维张量/标量 ,装在张量/容器水桶中的每个数字称为“标量”。标量是一个数字。你会问为什么不干脆叫它们一个数字呢?我不知道,也许数学家只是喜欢听起来酷?标量听起来确实比数字酷。

    实际上,你可以使用一个数字的张量,我们称为0维张量,也就是一个只有0维的张量。它仅仅只是带有一个数字的水桶。想象水桶里只有一滴水,那就是一个0维张量。

    本教程中,我将使用Python,Keras,TensorFlow和Python库Numpy。在Python中,张量通常存储在Nunpy数组,Numpy是在大部分的AI框架中,一个使用频率非常高的用于科学计算的数据包。

    你将在Kaggle(数据科学竞赛网站)上经常看到Jupyter Notebooks(安装见文末阅读链接,“数学烂也要学AI:带你造一个经济试用版AI终极必杀器”)关于把数据转变成Numpy数组。Jupyter notebooks本质上是由工作代码标记嵌入。可以认为它把解释和程序融为一体。

    我们为什么想把数据转换为Numpy数组?

    很简单。因为我们需要把所有的输入数据,如字符串文本,图像,股票价格,或者视频,转变为一个统一得标准,以便能够容易的处理。

    这样我们把数据转变成数字的水桶,我们就能用TensorFlow处理。

    它仅仅是组织数据成为可用的格式。在网页程序中,你也许通过XML表示,所以你可以定义它们的特征并快速操作。同样,在深度学习中,我们使用张量水桶作为基本的乐高积木。

    1维张量/向量 如果你是名程序员,那么你已经了解,类似于1维张量:数组。

    每个编程语言都有数组,它只是单列或者单行的一组数据块。在深度学习中称为1维张量。张量是根据一共具有多少坐标轴来定义。1维张量只有一个坐标轴。 1维张量称为“向量”。我们可以把向量视为一个单列或者单行的数字。

    如果想在Numpy得出此结果,按照如下方法:我们可以通过NumPy’s ndim函数,查看张量具有多个坐标轴。我们可以尝试1维张量。

    2维张量 你可能已经知道了另一种形式的张量,矩阵——2维张量称为矩阵,这不是基努·里维斯(Keanu Reeves)的电影《黑客帝国》,想象一个excel表格。我们可以把它看作为一个带有行和列的数字网格。这个行和列表示两个坐标轴,一个矩阵是二维张量,意思是有两维,也就是有两个坐标轴的张量。

    在Numpy中,我们可以如下表示:

    x = np.array([[5,10,15,30,25],

    [20,30,65,70,90],

    [7,80,95,20,30]])
    我们可以把人的特征存储在一个二维张量。有一个典型的例子是邮件列表。

    比如我们有10000人,我们有每个人的如下特性和特征:

    First Name(名)

    Last Name(姓)

    Street Address(街道地址)

    City(城市)

    State(州/省)

    Country(国家)

    Zip(邮政编码)
    这意味着我们有10000人的七个特征。

    张量具有“形状”,它的形状是一个水桶,即装着我们的数据也定义了张量的最大尺寸。我们可以把所有人的数据放进二维张量中,它是(10000,7)。

    你也许想说它有10000列,7行。不。张量能够被转换和操作,从而使列变为行或者行变为列。

    3维张量

    这时张量真正开始变得有用,我们经常需要把一系列的二维张量存储在水桶中,这就形成了3维张量。

    在NumPy中,我们可以表示如下:

    x = np.array([[[5,10,15,30,25],

    [20,30,65,70,90],

    [7,80,95,20,30]]

    [[3,0,5,0,45],

    [12,-2,6,7,90],

    [18,-9,95,120,30]]

    [[17,13,25,30,15],

    [23,36,9,7,80],

    [1,-7,-5,22,3]]])
    你已经猜到,一个三维张量有三个坐标轴,可以这样看到:

    x.ndim

    输出为:

    3
    让我们再看一下上面的邮件列表,现在我们有10个邮件列表,我们将存储2维张量在另一个水桶里,创建一个3维张量,它的形状如下:

    (number_of_mailing_lists, number_of_people, number_of_characteristics_per_person)

    (10,10000,7)

    你也许已经猜到它,但是一个3维张量是一个数字构成的立方体。

    我们可以继续堆叠立方体,创建一个越来越大的张量,来编辑不同类型的数据,也就是4维张量,5维张量等等,直到N维张量。N是数学家定义的未知数,它是一直持续到无穷集合里的附加单位。它可以是5,10或者无穷。

    实际上,3维张量最好视为一个立方体,有长宽高这样的。

    存储在张量数据中的公式

    这里有一些存储在各种类型张量的公用数据集类型:

    3维=时间序列

    4维=图像

    5维=视频

    几乎所有的这些张量的共同之处是样本量。样本量是集合中元素的数量,它可以是一些图像,一些视频,一些文件或者一些推特。

    通常,真实的数据至少是一个数据量。

    把形状里不同维数看作字段。我们找到一个字段的最小值来描述数据。

    因此,即使4维张量通常存储图像,那是因为样本量占据张量的第4个字段。

    例如,一个图像可以用三个字段表示:

    (width, height, color_depth) = 3D
    但是,在机器学习工作中,我们经常要处理不止一张图片或一篇文档——我们要处理一个集合。我们可能有10,000张郁金香的图片,这意味着,我们将用到4D张量,就像这样:

    (sample_size, width, height, color_depth) = 4D
    我们来看看一些多维张量存储模型的例子:

    时间序列数据

    用3D张量来模拟时间序列会非常有效!

    医学扫描——我们可以将脑电波(EEG)信号编码成3D张量,因为它可以由这三个参数来描述:

    (time, frequency, channel)
    这种转化看起来就像这样:

    如果我们有多个病人的脑电波扫描图,那就形成了一个4D张量:

    (sample_size, time, frequency, channel)
    Stock Prices

    在交易中,股票每分钟有最高、最低和最终价格。如下图的蜡烛图所示:

    纽交所开市时间从早上9:30到下午4:00,即6.5个小时,总共有6.5 x 60 = 390分钟。如此,我们可以将每分钟内最高、最低和最终的股价存入一个2D张量(390,3)。如果我们追踪一周(五天)的交易,我们将得到这么一个3D张量:

    (week_of_data, minutes, high_low_price)
    即:(5,390,3)

    同理,如果我们观测10只不同的股票,观测一周,我们将得到一个4D张量

    (10,5,390,3)

    假设我们在观测一个由25只股票组成的共同基金,其中的每只股票由我们的4D张量来表示。那么,这个共同基金可以有一个5D张量来表示:

    (25,10,5,390,3)

    文本数据

    我们也可以用3D张量来存储文本数据,我们来看看推特的例子。

    首先,推特有140个字的限制。其次,推特使用UTF-8编码标准,这种编码标准能表示百万种字符,但实际上我们只对前128个字符感兴趣,因为他们与ASCII码相同。所以,一篇推特文可以包装成一个2D向量:

    (140,128)

    如果我们下载了一百万篇川普哥的推文(印象中他一周就能推这么多),我们就会用3D张量来存:

    (number_of_tweets_captured, tweet, character)

    这意味着,我们的川普推文集合看起来会是这样:

    (1000000,140,128)

    图片

    4D张量很适合用来存诸如JPEG这样的图片文件。之前我们提到过,一张图片有三个参数:高度、宽度和颜色深度。一张图片是3D张量,一个图片集则是4D,第四维是样本大小。

    著名的MNIST数据集是一个手写的数字序列,作为一个图像识别问题,曾在几十年间困扰许多数据科学家。现在,计算机能以99%或更高的准确率解决这个问题。即便如此,这个数据集仍可以当做一个优秀的校验基准,用来测试新的机器学习算法应用,或是用来自己做实验。

    Keras 甚至能用以下语句帮助我们自动导入MNIST数据集:

    from keras.datasets import mnist

    (train_images, train_labels), (test_images, test_labels) = mnist.load_data()
    这个数据集被分成两个部分:训练集和测试集。数据集中的每张图片都有一个标签。这个标签写有正确的读数,例如3,7或是9,这些标签都是通过人工判断并填写的。

    训练集是用来训练神经网络学习算法,测试集则用来校验这个学习算法。

    MNIST图片是黑白的,这意味着它们可以用2D张量来编码,但我们习惯于将所有的图片用3D张量来编码,多出来的第三个维度代表了图片的颜色深度。

    MNIST数据集有60,000张图片,它们都是28 x 28像素,它们的颜色深度为1,即只有灰度。

    TensorFlow这样存储图片数据:

    (sample_size, height, width, color_depth).
    于是我们可以认为,MNIST数据集的4D张量是这样的:

    (60000,28,28,1)
    彩色图片

    彩色图片有不同的颜色深度,这取决于它们的色彩(注:跟分辨率没有关系)编码。一张典型的JPG图片使用RGB编码,于是它的颜色深度为3,分别代表红、绿、蓝。

    这是一张我美丽无边的猫咪(Dove)的照片,750 x750像素,这意味着我们能用一个3D张量来表示它:

    (750,750,3)

    My beautiful cat Dove (750 x 750 pixels)

    这样,我可爱的Dove将被简化为一串冷冰冰的数字,就好像它变形或流动起来了。

    然后,如果我们有一大堆不同类型的猫咪图片(虽然都没有Dove美),也许是100,000张吧,不是DOVE它的,750 x750像素的。我们可以在Keras中用4D张量来这样定义:

    (10000,750,750,3)

    5D张量

    5D张量可以用来存储视频数据。TensorFlow中,视频数据将如此编码:

    (sample_size, frames, width, height, color_depth)

    如果我们考察一段5分钟(300秒),1080pHD(1920 x 1080像素),每秒15帧(总共4500帧),颜色深度为3的视频,我们可以用4D张量来存储它:

    (4500,1920,1080,3)
    当我们有多段视频的时候,张量中的第五个维度将被使用。如果我们有10段这样的视频,我们将得到一个5D张量:

    (10,4500,1920,1080,3)
    实际上这个例子太疯狂了!

    这个张量的大是很荒谬的,超过1TB。我们姑且考虑下这个例子以便说明一个问题:在现实世界中,我们有时需要尽可能的缩小样本数据以方便的进行处理计算,除非你有无尽的时间。

    这个5D张量中值的数量为:

    10 x 4500 x 1920 x 1080 x 3 = 279,936,000,000
    在Keras中,我们可以用一个叫dype的数据类型来存储32bits或64bits的浮点数

    我们5D张量中的每一个值都将用32 bit来存储,现在,我们以TB为单位来进行转换:

    279,936,000,000 x 32 = 8,957,952,000,000
    这还只是保守估计,或许用32bit来储存根本就不够(谁来计算一下如果用64bit来存储会怎样),所以,减小你的样本吧朋友。

    事实上,我举出这最后一个疯狂的例子是有特殊目的的。我们刚学过数据预处理和数据压缩。你不能什么工作也不做就把大堆数据扔向你的AI模型。你必须清洗和缩减那些数据让后续工作更简洁更高效。

    降低分辨率,去掉不必要的数据(也就是去重处理),这大大缩减了帧数,等等这也是数据科学家的工作。如果你不能很好地对数据做这些预处理,那么你几乎做不了任何有意义的事。

    结论:好了,现在你已经对张量和用张量如何对接不同类型数据有了更好的了解。

    学习如何在张量上做各种变换,这就是大家所熟知的数学。换句话说,我们将让张量“流动Flow起来”。

    展开全文
  • 在Tensorflow中所有的数据都是通过张量的形式来表示。从功能上看,张量可以被理解为一个多维数组。但张量在Tensorflow中的实现并是不直接采用数组的形式,它是对Tensorflow中运算结果的引用,在张量中并没有真正保存...

    在Tensorflow中所有的数据都是通过张量的形式来表示。从功能上看,张量可以被理解为一个多维数组。但张量在Tensorflow中的实现并是不直接采用数组的形式,它是对Tensorflow中运算结果的引用,在张量中并没有真正保存数字,他保存的是如何得到这些数字的计算过程。如下所示,并不会得到加法的结果,而是得到对结果的一个引用。

    import tensorflow as tf
    a = tf.constant([[1,2,2],[1,2,3]])
    b = tf.constant([[1,2,2],[1,2,3]])
    result = a + b
    print(result)
    
    
    out:Tensor("add:0", shape=(2, 3), dtype=int32)

    一个张量中保存了三个属性:名字,维度,类型。
    名字不仅是张量的唯一标识符,同样也给出了这个张量是如何计算来的。计算图上的每一个节点代表了一个计算,计算的结果保存在张量中,所以张量和计算图上的节点所代表的计算结果相对应。则命名可以通过”node: src_output”的形式给出,node为节点名称,src_output为当前张量来自节点的第几个输出。
    类型,每个张量会有唯一的类型。可以通过dtype = tf.float32指定。

    tf.constant([1,2,3],name = 'a', dtype = tf.float32)

    使用默认类型有可能会导致潜在的类型不匹配问题,所以一般建议通过指定的dtype来明确变量或常数的类型。

    result.get_shape()函数可以用来获取一个张量的维度。

    展开全文
  • tensoflow2.0教程 根据tensorflow2.0最新的API学习教程
  • TensorFlow在计算图中可以创建多个图结构,在TensorFlow中创建一个张量并不能立即在图中增加什么,只有把张量赋值给占位符或者变量才会把此张量增加到计算图中。 1、固定张量(默认是float32类型,可以参考TF官网的...

    TensorFlow在计算图中可以创建多个图结构,在TensorFlow中创建一个张量并不能立即在图中增加什么,只有把张量赋值给占位符或者变量才会把此张量增加到计算图中。

    1、固定张量(默认是float32类型,可以参考TF官网的API)

    创建指定维度的零张量

    zero_tsr = tf.zeros([rol_dim, col_dim])

    创建指定维度的单位张量

    ones_tsr = tf.ones([row_dim, col_dim])

    创建指定维度的常数填充张量

    filled_tsr = tf.fill([row_dim, col_dim], 42)

    使用一个已知张量创建一个张量

    constant_tsr = tf.constant([1, 2, 3])

    2、形状相似的张量

    创建一个和已知张量类型大小一致的张量,使其所有元素为0或者1

    zero_similar = tf.zeros_like(constant_tsr)
    ones_similar = tf.ones_like(constant_tsr)

    3、序列张量

    创建指定间隔的张量,包含左右边界

    linear_tsr = tf.linspace(start = 0, stop = 1, num = 3)

    返回一个为[0.0, 0.5, 1.0]的张量

    创建指定间隔的张量,但不包含右边界

    interger_seq_tsr = tf.range(start = 6, stop = 15, delta = 3)

    返回一个为[6, 9, 12]的张量

    4、随机张量

    创建一个均分分布的随机数张量(不包含右边界)

    randunif_tsr = tf.random_uniform([row_dim, col_dim], minval = 0, maxval = 1)

    创建一个正态分布的随机数张量

    randnorm_tsr = tf.random_normal([row_dim, col_dim], mean = 0.0, stddev = 1.0)

    创建一个指定边界的正态分布的随机数变量

    truncnorm_tsr = tf.truncated_normal([row_dim, col_dim], mean = 0.0, stddev = 1.0)

    创建一个随机化的张量

    shuffled_output = tf.random_shuffle(input_tensor)
    cropped_output = tf.random_crop(input_tensor, crop_size)

    对一个张量进行剪裁

    cropped_image = tf.random_crop(my_image, [height/2, width/2, 3])

     

    展开全文
  • 张量初始化2.1. 直接从数据中创建2.2. 从NumPy的array创建2.3. 从另一个张量创建2.4. 用随机或常量值初始化3. 张量属性4. 张量运算4.1. 标准的类似numpy的索引和切片:4.2. 张量连接4.3. 张量乘法4.3.1. 矩阵数乘...
  • 很好的书啊!一般理科学生用的到的!赶快下载!
  • 60分钟快速入门1张量张量初始化1. 直接生成张量(通过列表)2. 通过Numpy数组来生成张量3. 通过已有张量来生成新张量4. 通过指定数据维度生成张量张量属性:1. 张量的维数2. 数据类型3. 存储设备(CPU或GPU)张量...
  • 张量以及低秩——入门初级教程

    千次阅读 2018-09-20 21:01:28
    张量之所以重要 ,在于它可以满足一切物理定律必须与坐标系的选择无关的特性。 先从这句话引出,大家能够看到,张量说白了就是与坐标系的选择无关。 坐标系我们比较熟知的就是右手坐标系,左手坐标系,以及各种名字...
  • 1.认识张量Tensor:标量、向量、矩阵,张量的属性(形状、类型和值); 2.Tensorflow运算操作:加、减乘除、矩阵运算等; 认识张量Tensor TensorFlow 使用 张量 (Tensor)作为数据的基本单位。TensorFlow 的张量在...
  • 教程的第一部分,将介绍关于PyTorch张量的基础知识。 1. Tensor张量 PyTorch中的张量类似于numpy的ndarrays多维数组。 # Number t1 = torch.tensor(4.) t1 = torch.FloatTensor([4]) t1.dtype # Vector t2 = torch....
  • 【tvm官网教程张量表达与调度目的1. 调度原语1.1 te常用接口1.2 stage常用成员函数欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮...
  • 张量的基本操作有:加,减,乘,除。因为目前TensorFlow的版本更新比较快,而且感觉根据最新的版本更替张量的数值操作都在向着tf.math模块迁移。具体的API要根据版本来定。 这里需要注意的是关于div()的操作: 1、...
  • 张量tensor

    2020-09-02 10:16:37
    教程中,我将使用Python,Keras,TensorFlow和Python库Numpy。在Python中,张量通常存储在Numpy数组,Numpy是在大部分的AI框架中,一个使用频率非常高的用于科学计算的数据包。 我们为什么想把数据转换为Numpy数组...
  • 学习笔记|Pytorch使用教程02 本学习笔记主要摘自“深度之眼”,做一个总结,方便查阅。 使用Pytorch版本为1.2。 张量的操作:拼接、切分、索引和变换。 张量的数学运算 线性回归 一.张量的操作:拼接、切分、索引和...
  • 【tensorflow】浅谈什么是张量tensor

    万次阅读 多人点赞 2020-02-12 17:43:37
    也许你在NASA教程中看到它,仍然不知道它在说些什么?问题在于大多数讲述张量的指南,都假设你已经掌握他们描述数学的所有术语。 别担心! 我像小孩子一样讨厌数学,所以如果我能明白,你也可以!...
  • 如果没有任何注释,TensorFlow会自动决定是使用GPU还是CPU进行操作 - 如有必要,可以复制CPU和GPU内存之间的张量。 由操作产生的张量通常由执行操作的设备的存储器支持,例如:  x = tf.random.uniform([3, 3]) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 818
精华内容 327
关键字:

张量教程