TensorFlow 学习笔记

本文详细介绍了TensorFlow中的基本运算操作,包括算术运算、矩阵运算、张量操作等,并通过实例展示了变量的使用和简单的线性回归案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.TensorFlow的基本运算
# 算术操作符:+ - * / % 
tf.add(x, y, name=None)  # 加法(支持 broadcasting)
tf.subtract(x, y, name=None)  # 减法
tf.multiply(x, y, name=None)  # 乘法
tf.divide(x, y, name=None)  # 浮点除法, 返回浮点数(python3 除法)
tf.mod(x, y, name=None)  # 取余

# 幂指对数操作符:^ ^2 ^0.5 e^ ln 
tf.pow(x, y, name=None)  # 幂次方
tf.square(x, name=None)  # 平方
tf.sqrt(x, name=None)  # 开根号,必须传入浮点数或复数
tf.exp(x, name=None)  # 计算 e 的次方
tf.log(x, name=None)  #  e 为底,必须传入浮点数或复数

# 取符号、负、倒数、绝对值、近似、两数中较大/小的
tf.negative(x, name=None)  # 取负(y = -x).
tf.sign(x, name=None)  # 返回 x 的符号
tf.reciprocal(x, name=None)  # 取倒数
tf.abs(x, name=None)  # 求绝对值
tf.round(x, name=None)  # 四舍五入
tf.ceil(x, name=None)  # 向上取整
tf.floor(x, name=None)  # 向下取整
tf.rint(x, name=None)  # 取最接近的整数 
tf.maximum(x, y, name=None)  # 返回两tensor中的最大值 (x > y ? x : y)
tf.minimum(x, y, name=None)  # 返回两tensor中的最小值 (x < y ? x : y)

# 三角函数和反三角函数
tf.cos(x, name=None)
tf.sin(x, name=None)
tf.tan(x, name=None)
tf.acos(x, name=None)
tf.asin(x, name=None)
tf.atan(x, name=None)

# 其它
tf.div(x, y, name=None)  # python 2.7 除法, x/y-->int or x/float(y)-->float
tf.truediv(x, y, name=None)  # python 3 除法, x/y-->float
tf.floordiv(x, y, name=None)  # python 3 除法, x//y-->int
tf.realdiv(x, y, name=None)
tf.truncatediv(x, y, name=None)
tf.floor_div(x, y, name=None)
tf.truncatemod(x, y, name=None)
tf.floormod(x, y, name=None)
tf.cross(x, y, name=None)
tf.add_n(inputs, name=None)  # inputs: A list of Tensor objects, each with same shape and type
tf.squared_difference(x, y, name=None)

# 矩阵乘法(tensors of rank >= 2)
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)

# 转置,可以通过指定 perm=[1, 0] 来进行轴变换
tf.transpose(a, perm=None, name='transpose')

# 在张量 a 的最后两个维度上进行转置
tf.matrix_transpose(a, name='matrix_transpose')
# Matrix with two batch dimensions, x.shape is [1, 2, 3, 4]
# tf.matrix_transpose(x) is shape [1, 2, 4, 3]


# 求矩阵的迹
tf.trace(x, name=None)

# 计算方阵行列式的值
tf.matrix_determinant(input, name=None)

# 求解可逆方阵的逆,input 必须为浮点型或复数
tf.matrix_inverse(input, adjoint=None, name=None)

# 奇异值分解
tf.svd(tensor, full_matrices=False, compute_uv=True, name=None)

# QR 分解
tf.qr(input, full_matrices=None, name=None)

# 求张量的范数(默认2)
tf.norm(tensor, ord='euclidean', axis=None, keep_dims=False, name=None)

# 构建一个单位矩阵, 或者 batch 个矩阵,batch_shape  list 的形式传入
tf.eye(num_rows, num_columns=None, batch_shape=None, dtype=tf.float32, name=None)
# Construct one identity matrix.
tf.eye(2)
== > [[1., 0.],
      [0., 1.]]

# Construct a batch of 3 identity matricies, each 2 x 2.
# batch_identity[i, :, :] is a 2 x 2 identity matrix, i = 0, 1, 2.
batch_identity = tf.eye(2, batch_shape=[3])

# Construct one 2 x 3 "identity" matrix
tf.eye(2, num_columns=3)
== > [[1., 0., 0.],
      [0., 1., 0.]]

# 构建一个对角矩阵,rank = 2*rank(diagonal)
tf.diag(diagonal, name=None)
# 'diagonal' is [1, 2, 3, 4]
tf.diag(diagonal) == > [[1, 0, 0, 0]
                        [0, 2, 0, 0]
                        [0, 0, 3, 0]
                        [0, 0, 0, 4]]

# 其它
tf.diag_part
tf.matrix_diag
tf.matrix_diag_part
tf.matrix_band_part
tf.matrix_set_diag
tf.cholesky
tf.cholesky_solve
tf.matrix_solve
tf.matrix_triangular_solve
tf.matrix_solve_ls
tf.self_adjoint_eig
tf.self_adjoint_eigvals
1.常量

m1 = tf.constant([[3, 4]])
m2 = tf.constant([[3], [4]])
pro = tf.matmul(m1, m2)  # 矩阵乘法
sess = tf.Session()
res = sess.run(pro)
print(res)
print(m2)
sess.close()
2.变量

2.1  变量的基本操作

# 定义变量
x = tf.Variable([1,2])
y = tf.constant([3,3])
sub = tf.subtract(x,y)  # 矩阵减法
add = tf.add(x,sub)
# 初始化全局变量
init = tf.global_variables_initializer()

with tf.Session() as s:
    s.run(init)
    print(s.run(sub))
    print(s.run(add))

2.2 变量的循环赋值

state = tf.Variable(0,name='conter')
new  = tf.add(state,1)
# 赋值的方法  把后面的值赋给前面的变量
update = tf.assign(state,new)

init = tf.global_variables_initializer()
with tf.Session() as s:
    s.run(init)
    s.run(new)
    for i in range(5):
        s.run(update)
        print(s.run(state))

3.Fetch 和 Feed

##  Fetch(run 的时候可以同时运行多个op)
c1 = tf.constant(3.0)
c2 = tf.constant(2.0)
c3 = tf.constant(5.0)
add = tf.add(c2,c3)
mul = tf.multiply(add,c1)  #乘法
with tf.Session() as s:
    f = s.run(
        [mul,add]
    )
    print(f)
# 定义占位符 FEED 字典的形式传入
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
mul = tf.multiply(input1,input2)
with tf.Session() as s:
    print(s.run(mul,feed_dict={input1:[7.],input2:[2.]}))

4.一个简单的线性回归的案例

# # 使用numpy生成随机点
x_d = np.random.rand(100)
y_d = x_d*0.1+0.2
# 构建一个线性模型
b = tf.Variable(5.)
k = tf.Variable(10.)
y = k*x_d+b
# 二次代价函数     (先求平方再求平均值)
loss = tf.reduce_mean(tf.square(y_d-y))
# 优化器  梯度下降法
e = tf.train.GradientDescentOptimizer(0.2)
# 最小化代价函数
= e.minimize(loss)

init = tf.global_variables_initializer()
with tf.Session() as s:
    s.run(init)
    for i in range(501):
        s.run(t)
        if i%20 == 0:
            print(s.run([k,b]))

可以得到 k ,b 的值趋近于我们设定的值!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值