TensorFlow学习笔记(一)

TensorFlow学习笔记(一)

  TensorFlow是利用人工智能神经网络来分析和处理复杂数据结构的系统,是一种支持深度学习的开源软件库,可以实现卷积神经网络(CNN)、循环神经网络(RNN)和深度神经网络(DNN)等经典算法,并在语音识别、自然语言理解、计算机视觉等方面得到了广泛的应用。
  TensorFlow借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等)
**特点:**速度快、扩展性好、灵活性高,以及具备计算图和数据分析的一系列可视化工具。
其他主流深度学习框架:Keras、caffe、PyTorch等

TensorFlow编程初体验

本次学习在Anaconda中的Jupyter Notebook中编译运行,新建python3文件在这里插入图片描述
输入,按“Ctrl+Enter”执行;

import tensorflow as tf   #导入tensorflow
print("TensorFlow版本是:",tf.__version__)  #显示当前TensorFlow版本

导入TensorFlow库,当前的版本是2.0.0

node1 = tf.constant([[3.0,1.5],[2.5,6.0]],tf.float32)
node2 = tf.constant([[4.0,1.0],[5.0,2.5]],tf.float32)
node3 = tf.add(node1, node2)

node3

在这里插入图片描述
输出的是一个Tensor

print(node3,numpy())  #输出运算结果Tensor的值

在这里插入图片描述
得到Tensor的值,通过 numpy()方法

TensorFlow 名称的含义

TensorFlow = Tensor + Flow
Tensor 张量
  数据结构:多维数组
Flow 流
  计算模型:张量之间通过计算而转换的过程

TensorFlow是一个通过计算图的形式表述计算的编程系统
  每一个计算都是计算图上的一个节点;
  节点之间的边描述了计算之间的关系;

张量

张量的概念
  • 在TensorFlow中,所有的数据都通过张量的形式来表示
  • 从功能的角度,张量可以简单理解为多维数组
     零阶张量表示标量(scalar),也就是一个数;
     一阶张量为向量(vector),也就是一维数组;
     n阶张量可以理解为一个n维数组;
  • 张量并没有真正保存数字,它保存的是计算过程
张量方法和属性

标识号(id)
  系统自动维护的唯一值
形状(shape)
  张量的维度信息
类型(dtype)
  每一个张量会有一个唯一的类型,TensorFlow会对参与运算的所有张量进行类型的检查,发现类型不匹配时会报错
值(value)
  通过numpy()方法获取,返回Numpy.array类型的数据

print(node3.numpy())  #输出[[7.  2.5]]
                      #     [7.5 8.5]]
print(node3.shape)     #输出(2, 2),即矩阵的长和宽均为2
print(node3.dtype)    #输出<dtype: 'float32'>

在这里插入图片描述

张量的形状

三个术语描述张量的维度:阶(rank)、形状(shape) 、维数(dimension number)
在这里插入图片描述
表中D0表示第0维元素的个数,Di表示Di维元素的个数
小技巧:看几维直接看最左边的中括号有几个就好;

scalar = tf.constant(100)
vector = tf.constant([1, 2, 3, 4, 5])
matrix = tf.constant([[1, 2, 3], [4, 5, 6]])
cube_matrix = tf.constant([[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9]]])

print(scalar.shape)          #输出()
print(vector.shape)         #输出(5,)
print(matrix.shape)         #输出(2, 3)
print(cube_matrix.shape)    #输出(3, 3, 1)

查看张量的shape属性还可以通过get_shape()方法来获取。

张量的阶

张量的阶(rank)表征了张量的维度
在这里插入图片描述

获取张量的元素

阶为1的张量等价于向量;
阶为2的张量等价于矩阵,通过 t[i, j] 获取元素;
阶为3的张量,通过 t[i, j, k] 获取元素;
下标从0开始

cube_matrix = tf.constant([[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9]]])
print(cube_matrix.numpy()[1,2,0])  #输出6
张量的类型

TensorFlow支持不同的类型
实数 tf.float32, tf.float64
整数 tf.int8, tf.int16, tf.int32, tf.int64, tf.uint8
布尔 tf.bool
复数 tf.complex64, tf.complex128
默认类型:
不带小数点的数会被默认为int32
带小数点的会被默认为float32

每个张量都会有一个唯一的类型,TensorFlow在进行运算的时候会对参与运算的所有张量进行类型的检查,发现类型不匹配时会报错。

a = tf.constant([1, 2])
b = tf.constant([2.0, 3.0])

result = tf.add(a,b)    #运行报错

在TensorFlow中可以通过tf.cast()进行数据类型转换:

a = tf.constant([1, 2])
b = tf.constant([2.0, 3.0])

a = tf.cast(a,tf.float32)   #数据类型转换

result = tf.add(a,b)
result

常量与变量

常量 constant

在运行过程中值不会改变的单元
创建语句:
tf.constant(
   value,
   dtype=None,
   shape=None,
   name=‘Const’
   )
在创建常量时只有value值是必填的,dtype 等参数可以缺省,会根据具体的value值设置相应的值.在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

变量 Variable

在运行过程中值可以被改变的单元
创建语句:
注意V是大写字母
变量 Variable
tf.Variable (
   initial_value,
   dtype=None,
   shape=None,
   trainable =True
   name=’Variable’

v1 = tf.Variable([1, 2])
v2 = tf.Variable([3, 4],tf.float32)
v1,v2

变量在创建时必须确定初始值,可以像定义常量一样在这里插入图片描述
也可以用一个张量作为初始值;

  • 在TensorFlow中变量和普通编程语言中的变量有着较大区别
  • TensorFlow中的变量是一种特殊的设计,是可以被机器优化过程中自动改变值的张量,也可以理解为待优化的张量
  • 在TensorFlow中变量创建后,一般无需人工进行赋值,系统会根据算法模型,在训练优化过程中自动调整变量的值
  • 在变量的参数中,trainable参数用来表征当前变量是否需要被自动优化,创建变量对象时默认是启用自动优化标志。

变量的赋值

  • 与传统编程语言不同,TensorFlow中的变量定义后,一般无需人工赋值, 系统会根据算法模型,训练优化过程中自动调整变量对应的数值
  • 特殊情况需要人工更新的,可用变量赋值语句***assign()***来现实;
v = tf.Variable(5)
v.assign(v+1)
v

TensorFlow还直接提供了assign_add()、assign_sub()方法来实现变量的加法和 减法值更新

v1 = tf.Variable(5)
v2 = tf.Variable(5)
v1.assign_add(1)
v2.assign_sub(1)
v1,v2

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值