tensorflow语法【tf.matmul() 、loc和iloc函数、tf.expand_dims()】

2022-12-01 16:39:15 浏览数 (1)

相关文章:

【一】tensorflow安装、常用python镜像源、tensorflow 深度学习强化学习教学

【二】tensorflow调试报错、tensorflow 深度学习强化学习教学

【三】tensorboard安装、使用教学以及遇到的问题

【四】超级快速pytorch安装


trick1---实现tensorflow和pytorch迁移环境教学


tf.matmul() 和tf.multiply() 的区别

1.tf.multiply()两个矩阵中对应元素各自相乘 格式: tf.multiply(x, y, name=None)  参数:  x: 一个类型为:half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128的张量。  y: 一个类型跟张量x相同的张量。   返回值: x * y element-wise.   注意:  (1)multiply这个函数实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘,而不是矩阵乘法,注意和tf.matmul区别。  (2)两个相乘的数必须有相同的数据类型,不然就会报错。 2.tf.matmul()将矩阵a乘以矩阵b,生成a * b。 格式: tf.matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=False, b_is_sparse=False, name=None)  参数:  a: 一个类型为 float16, float32, float64, int32, complex64, complex128 且张量秩 > 1 的张量。  b: 一个类型跟张量a相同的张量。  transpose_a: 如果为真, a则在进行乘法计算前进行转置。  transpose_b: 如果为真, b则在进行乘法计算前进行转置。  adjoint_a: 如果为真, a则在进行乘法计算前进行共轭和转置。  adjoint_b: 如果为真, b则在进行乘法计算前进行共轭和转置。  a_is_sparse: 如果为真, a会被处理为稀疏矩阵。  b_is_sparse: 如果为真, b会被处理为稀疏矩阵。  name: 操作的名字(可选参数)  返回值: 一个跟张量a和张量b类型一样的张量且最内部矩阵是a和b中的相应矩阵的乘积。  注意:  (1)输入必须是矩阵(或者是张量秩 >2的张量,表示成批的矩阵),并且其在转置之后有相匹配的矩阵尺寸。  (2)两个矩阵必须都是同样的类型,支持的类型如下:float16, float32, float64, int32, complex64, complex128。  引发错误:  ValueError: 如果transpose_a 和 adjoint_a, 或 transpose_b 和 adjoint_b 都被设置为真

np.arange()用法

np.arange()

函数返回一个有终点和起点的固定步长的排列,如1,2,3,4,5,起点是1,终点是6,步长为1。

参数个数情况: np.arange()函数分为一个参数,两个参数,三个参数三种情况

1)一个参数时,参数值为终点,起点取默认值0,步长取默认值1。

2)两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值1。

3)三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数

代码语言:javascript复制
#一个参数 默认起点0,步长为1 输出:[0 1 2]
a = np.arange(3)

#两个参数 默认步长为1 输出[3 4 5 6 7 8]
a = np.arange(3,9)

#三个参数 起点为0,终点为3,步长为0.1 输出[ 0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1.   1.1  1.2  1.3  1.4 1.5  1.6  1.7  1.8  1.9  2.   2.1  2.2  2.3  2.4  2.5  2.6  2.7  2.8  2.9]
a = np.arange(0, 3, 0.1)

loc和iloc函数用法

loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行

iloc函数:通过行号来取行数据(如取第二行的数据

  1. 利用loc、iloc提取行数据
代码语言:javascript复制
import numpy as np
import pandas as pd
#创建一个Dataframe
data=pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('ABCD'))
 
In[1]: data
Out[1]: 
    A   B   C   D
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11
d  12  13  14  15
 
#取索引为'a'的行
In[2]: data.loc['a']
Out[2]:
A    0
B    1
C    2
D    3
 
#取第一行数据,索引为'a'的行就是第一行,所以结果相同
In[3]: data.iloc[0]
Out[3]:
A    0
B    1
C    2
D    3
  1. 利用loc、iloc提取列数据
代码语言:javascript复制
In[4]:data.loc[:,['A']] #取'A'列所有行,多取几列格式为 data.loc[:,['A','B']]
Out[4]: 
    A
a   0
b   4
c   8
d  12
 
In[5]:data.iloc[:,[0]] #取第0列所有行,多取几列格式为 data.iloc[:,[0,1]]
Out[5]: 
    A
a   0
b   4
c   8
d  12

3.利用loc、iloc提取指定行、指定列数据

代码语言:javascript复制
In[6]:data.loc[['a','b'],['A','B']] #提取index为'a','b',列名为'A','B'中的数据
Out[6]: 
   A  B
a  0  1
b  4  5
 
In[7]:data.iloc[[0,1],[0,1]] #提取第0、1行,第0、1列中的数据
Out[7]: 
   A  B
a  0  1
b  4  5

4.利用loc、iloc提取所有数据

代码语言:javascript复制
In[8]:data.loc[:,:] #取A,B,C,D列的所有行
Out[8]: 
    A   B   C   D
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11
d  12  13  14  15
 
In[9]:data.iloc[:,:] #取第0,1,2,3列的所有行
Out[9]: 
    A   B   C   D
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11
d  12  13  14  15

5.利用loc函数,根据某个数据来提取数据所在的行

代码语言:javascript复制
In[10]: data.loc[data['A']==0] #提取data数据(筛选条件: A列中数字为0所在的行数据)
Out[10]: 
   A  B  C  D
a  0  1  2  3
 
In[11]: data.loc[(data['A']==0)&(data['B']==2)] #提取data数据(多个筛选条件)
Out[11]: 
   A  B  C  D
a  0  1  2  3



In[12]: data[data['A']==0] #dataframe用法
In[13]: data[data['A'].isin([0])] #isin函数
In[14]: data[(data['A']==0)&(data['B']==2)] #dataframe用法
In[15]: data[(data['A'].isin([0]))&(data['B'].isin([2]))] #isin函数
 
Out[15]: 
   A  B  C  D
a  0  1  2  3

tf.expand_dims()使用

代码语言:javascript复制
tf.expand_dims(
    input,
    axis=None,
    name=None,
    dim=None
)

所实现的功能是给定一个input,在axis轴处给input增加一个为1的维度。

demo:

代码语言:javascript复制
# 't2' is a tensor of shape [2, 3, 5]
tf.shape(tf.expand_dims(t2, 0))  # [1, 2, 3, 5]

因为axis=0所以矩阵的维度变成1*2*3*5。

同理如果axis=2,矩阵就会变为2*3*1*5。

0其实代表的第一维度,那么1代表第二维度,2代表第三维度。以此类推。

0 人点赞