学习笔记(TensorFlow)

什么是张量?

张量(Tensor):多维数组(列表)       阶:表示为张量的维数

0阶:标量 exp :s=1 2 3

1阶:向量 exp:  v=[1,2,3]

2阶: 矩阵 exp: m=[[1,2,3],[4,5,6]]   (注:通过数括号的方式来计算张量的维度)

张量可以表示0阶到n阶的数组

如何创建一个张量?

创建一个张量   tf.constant(张量内容,dtype=数据类型(可选))

import tensorflow as tf
a=tf.constant([3,5],dtype=tf.int64)
print(a)
print(a.dtype)
print(a.shape)

将numpy的数据类型转化为Tensor数据类型   tf.convert_to_tensor(数据名,dtype=数据类型(可选))

import tensorflow as tf
import numpy as np
a=np.arange(0,5)
b=tf.convert_to_tensor(a,dtype=tf.int64)
print(b)
print(a)
print(b.dtype)

创建全为0的张量   tf.zeros(维度)

创建全为1的张量   tf.ones(维度)

创建指定值的张量  tf.fill(维度,指定值)

a=tf.zeros([2,5])
b=tf.ones([3,3])
c=tf.fill([4,4],2)
print(a)
print(b)
print(c)

生成正态分布的随机数,默认均值为0,标准差为1

 tf.random.normal(维度,mean=均值,stddev=标准差)

生成截断式正态分布的随机数

tf.random.truncated_normal(维度,mean=均值,stddev=标准差)

d=tf.random.normal([2,2],mean=1,stddev=1)
print(d)

c=tf.random.truncated_normal([2,2],mean=0.5,stddev=1)

print(c)

生成均匀分布随机数  [minval,maxval]

tf.random.uniform(维度,minval=最小值,maxval=最大值)

f=tf.random.uniform([2,3],minval=2,maxval=10)
print(f)

tensorflow常用函数

强制tensor转换为该数据类型  tf.cast(张量名,dtype=数据类型)

计算张量维度上元素的最小值  tf.reduce_min(张量名)

计算张量维度上元素的最大值  tf.reduce_max(张量名)

a=tf.constant([1,2,3],dtype=tf.float64)
print(a)
b=tf.cast(a,tf.int32)
print(b)
print(tf.reduce_min(b),tf.reduce_max(b))

计算张量沿着指定维度的平均值

tf.reduce_mean(张量名,axis=操作轴)

tf.reduce_sum(张量名,axis=操作轴)

a=tf.constant([[1,2,3],[2,2,3]])
print(a)
print(tf.reduce_mean)
print(tf.reduce_sum(a,axis=1))

tf.Variable()将变量标记为“可训练”,被标记的变量会在反向传播中记录梯度信息。神经网络训练中,常用该函数来标记待训练参数   tf.Variable(初始值)

TensorFlow中的数学运算

对应元素的四则运算:tf.add(张量1,张量2)  tf.subtract(张量1,张量2)  tf.multiply (张量1,张量2) tf.divide(张量1,张量2)

平方、次方、与开方:  tf.square(张量1,张量2)  tf.pow  tf.sqrt(张量1,张量2)

矩阵乘 :      tf.matmul(张量1,张量2)

只有维度相同的张量才可以做四则运算 

a=tf.ones([1,3])
b=tf.fill([1,3],1.)
print(a)
print(b)
print(tf.add(a,b))
print(tf.subtract(a,b))
print(tf.multiply(a,b))
print(tf.divide(b,a))

切分传入张量的第一维度,生成输入特征/标签对,构建数据集data=tf.data.Dataset.from_tensor_slices(输入特征,标签))     numpy和Tensor格式都可用该语句读入数据

features=tf.constant([12,23,10,17])
labels=tf.constant([0,1,1,0])
dataset=tf.data.Dataset.from_tensor_slices((features,labels))
print(dataset)
for element in dataset:
    print(element)

tf.GradientTape     with结构记录计算过程,gradient求张量的梯度

with tf.GradientTape() as tape:

       若干个计算过程

grad=tape.gradient(函数,对谁求导)

with tf.GradientTape() as tape:
    w=tf.Variable(tf.constant(3.0))
    loss=tf.pow(w,2)
grad=tape.gradient(loss,w)
print(grad)

enumerate   enumerate是Python的内建函数,它可遍历每个元素(如列表、元组或者字符串),组合为 :索引 元素,常在for循环中使用。

enumerate(列表名)

seq=['one','two','three']
for i,element in enumerate(seq):
    print(i,element)

tf.one_hot   独热编码(one-hot encoding):在分类问题中,常用独热码做标签,标记类别:1表示是,0表示非

tf.one_hot()函数将待转换数据转化为one-hot形式的数据输出

tf.one_hot(待转化数据,depth=几分类)

classes=3
labels=tf.constant([1,0,2]) 
output=tf.one_hot(labels,depth=classes)
print(output)

tf.nn.softmax  当n分类的n个输出(y0,y1.....yn-1)通过softmax()函数, 便符合概率分布了。

y=tf.constant([1.01,2.01,-0.66])
y_pro=tf.nn.softmax(y)
print("After softmax,y_pro is:",y_pro)

assign_sub   赋值操作,更新参数的值并返回。调用assign_sub前,先用tf.Variable定义变量w为可训练(可自更新)。

w.assign_sub(w要自减的内容)

w=tf.Variable(4)
w.assign_sub(1)
print(w)

tf,argmax  返回张量沿指定维度最大值的索引 tf.argmax(张量名,axis=操作轴)

import numpy as np
test =np.array([[1,2,3],[2,3,4],[5,4,3],[8,7,2]])
print(test)
print(test.shape)
print(tf.argmax(test,axis=0)) #返回每一列(经度)最大值的索引
print(tf.argmax(test,axis=1)) #放回每一行(维度)最大值的索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值