TensorFlow2.0入门到进阶3.2 —— 基础数据类型API之常量(constant)

1、张量

有没有小伙伴和我一样,TensorFlow中tensor是什么意思?张量,那张量又是什么意思?

TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表.一个张量有一个静态类型和动态类型的维数.张量可以在图中的节点之间流通.

张量的阶
在TensorFlow系统中,张量的维数来被描述为阶.但是张量的阶和矩阵的阶并不是同一个概念.张量的阶(有时是关于如顺序或度数或者是n维)是张量维数的一个数量描述.比如,下面的张量(使用Python中list定义的)就是2阶.

t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

你可以认为一个二阶张量就是我们平常所说的矩阵,一阶张量可以认为是一个向量.对于一个二阶张量你可以用语句t[i, j]来访问其中的任何元素.而对于三阶张量你可以用’t[i, j, k]'来访问其中的任何元素.

2、常量(constant)

在tensorflow中,数据分为几种类型: 常量Constant、变量Variable、占位符Placeholder。其中:

  • 常量:用于存储一些不变的数值,在计算图创建的时候,调用初始化方法时,直接保存在计算图中
  • 变量:模型训练的参数,在每次迭代之后会变化,比如全连接里面的W和bias
  • 占位符:就是模型每次训练时的样本,当计算图固定时,只需要替换占位符里面的内容,就可以重新计算了。

constant(恒定,在应用中该类型的变量通常是只读,不可修改的)张量。

3、实践代码

引入相关库函数:

import matplotlib as mpl
import matplotlib.pyplot as plt
#为了在jupyter notebook中画图
%matplotlib inline
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import keras

print(tf.__version__)
print(sys.version_info)
for module in mpl,np,pd,sklearn,tf,keras:
    print(module.__name__,module.__version__)

3.1创建常量

  • 创建常量,并打印全部或部分数据:
#常量
t = tf.constant([[1.,2.,3.],[4.,5.,6.]])

#index
print(t)
print(t[:,1:])
print(t[:,1])
print(t[...,1])

结果:

tf.Tensor(
[[1. 2. 3.]
 [4. 5. 6.]], shape=(2, 3), dtype=float32)
tf.Tensor(
[[2. 3.]
 [5. 6.]], shape=(2, 2), dtype=float32)
tf.Tensor([2. 5.], shape=(2,), dtype=float32)
tf.Tensor([2. 5.], shape=(2,), dtype=float32)

3.2 常量基本计算

#op
#这里t可以直接被打印,在tf1.x中是不可以的
# 所有元素加1
print(t+10)
# 所有元素平方
print(tf.square(t))
#t矩阵乘自己的转置
print(t @ tf.transpose(t))

结果:

tf.Tensor(
[[11. 12. 13.]
 [14. 15. 16.]], shape=(2, 3), dtype=float32)
tf.Tensor(
[[ 1.  4.  9.]
 [16. 25. 36.]], shape=(2, 3), dtype=float32)
tf.Tensor(
[[14. 32.]
 [32. 77.]], shape=(2, 2), dtype=float32)

3.3 和numpy之间的转换

# numpy conversion
print(t.numpy())
print(np.square(t))
np_t = np.array([[1.,2.,3.],[4.,5.,6.]])
print(tf.constant(np_t))
np_t = np.array(t)
print(tf.constant(np_t))

print(np.array(t))

结果:

[[1. 2. 3.]
 [4. 5. 6.]]
[[ 1.  4.  9.]
 [16. 25. 36.]]
tf.Tensor(
[[1. 2. 3.]
 [4. 5. 6.]], shape=(2, 3), dtype=float64)
tf.Tensor(
[[1. 2. 3.]
 [4. 5. 6.]], shape=(2, 3), dtype=float32)
[[1. 2. 3.]
 [4. 5. 6.]]

3.4 0维度

# Scalars :标量,0维
t=tf.constant(2.456)
print(t.numpy())
print(t.shape)

结果:

2.456
()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力改掉拖延症的小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值