tensorflow基础笔记

tensorflow学习笔记

1、tensorflow常量

tensorflw常量语法:
tf.constant(value,dtype=None,shape=None,name='Const',verify_shape=False)

value:必须型,填入常量数值或者list(输入张量的值)
dtype:非必须型,默认为None,输出张量元素类型,如int,float等
shape:非必须型,默认为None,输出张量的维度
name:非必须型,默认为Const,张量名称
verify_shap:非必须型,默认为False,检测shape与value中的shape是否一致,如不一致会用最后一个元素将shape补全

代码例子:

import tensorflow as tf
date = tf.constant(10,dtype=tf.float32,name='date')
date1=tf.constant([10,2,3,12],dtype=tf.float32,shape=[1,4])
date2 = tf.constant([10,3,32,4,5],dtype=tf.float32,shape=[2,4])
print(date)
with tf.Session() as sess: #tensorflow需要Session绘画执行,因此需要定义sess
    print(sess.run(date))
    print(sess.run(date1))
    print(sess.run(date2))

结果:
在这里插入图片描述

2、tensorflow变量

tensorflow变量语法:
tf.Variable(initial_value=None,trainable=None,validate_shape=True,
               caching_device=None,name=None,variable_def=None,dtype=None,
               import_scope=None,constraint=None,
               synchronization=VariableSynchronization.AUTO,
               aggregation=VariableAggregation.NONE,shape=None)

tf.Variable的属性较多,只选几个常用进行解释
initial_value:变量的初始化值
trainable:如果为True,则GradientTapes(梯度带)自动监视此变量的使用。默认为True,除非synchronization被设置为 ON_READF,在这种情况下,默认为False。
validate_shape:如果为False,则允许使用未知形状的值初始化变量。如果为True,则为默认值,必须知道的初始值 initial_value
name:变量的可选名称
dtype:如果设置,则initial_value将转换为给定类型。如果为 None,则将保留数据类型
shape:(可选)此变量的形状。 如果为None,将使用initial_value的形状。 当将此参数设置为tf.TensorShape(None)(表示未指定的形状)时,可以为变量分配不同形状的值。
参考网站:https://tensorflow.google.cn/api_docs/python/tf/Variable

代码例子

date1 = tf.constant(5)
date = tf.Variable(10)
sum1 =tf.add(date1,date)#加法运算,将date1+date
dataCopy = tf.assign(date,sum1)#赋值运算,将sum1赋值给date
print(date)
init = tf.global_variables_initializer()#变量值需要初始化
with tf.Session() as sess:
    sess.run(init)
    print('date:',sess.run(date))
    print('sum:',sess.run(sum1))
    sess.run(dataCopy)
    print('date:',sess.run(date))

结果:

<tf.Variable 'Variable_22:0' shape=() dtype=int32_ref>
date: 10
sum: 15
date: 15

tf.Variable在运行时必须先初始化:tf.global_variables_initializer()

3、tensotflow占位符

placeholder()函数
tf.placeholder(dtype,shape=None,name=None)

dtye:必须型,数据类型,如tf.float32,tf.int32等数值
shape:张量维度,默认为None
name:张量名称

代码示例:

import tensorflow as tf
data1 = tf.placeholder(tf.float32)#定义变量赋值
data2 = tf.placeholder(tf.float32)
dataAdd = tf.add(data1,data2)
with tf.Session() as sess:
    print(sess.run(dataAdd,feed_dict={data1:6,data2:2}))
    print(sess.run(dataAdd,feed_dict={data1:[2,3],data2:[3,2]}))
    # 括号内 1、dataAdd运算后张量;2、data数据(feed_dict = {1:参数,2:参数})
print('end!')

结果:

8.0
[5. 5.]
end!

为什么要使用tf.placeholder呢?
tensorflow本质是:tf=tensor(数据)+计算图
因此实际运行时,启动session才会真正运行的,而tf.placeholder的作用在于减少了op(计算方式),每次运算都会迭代上一次数据运算。

3、tensotflow四则运算

tensorflow四则运算包括:加、减、乘、除

tensorflow加法运算语法:x+y
tf.add(x,y,name=None)

tensorflow减法运算语法:x-y
tf.subtract(x,y,name=None)

tensorflow乘法运算语法:x*y
tf.multiply(x,y,name=None)

tensorflow除法运算语法:x/y
tf.divide(x,y,name=None)

常数四则运算代码示例

#常数四则运算
import tensorflow as tf
data1 = tf.constant(6)
data2 = tf.constant(2)
dataAdd = tf.add(data1,data2) #tf.add:tensorflow加法运算
dataMull = tf.multiply(data1,data2) #tf.multiply:tensorflow乘法运算
dataSub = tf.subtract(data1,data2) #tf.subtract:tensorflow减法运算
dataDiv = tf.divide(data1,data2) #tf.divide:tensorflow除法运算
with tf.Session() as sess:
    print(sess.run(dataAdd))
    print(sess.run(dataMull))
    print(sess.run(dataSub))
    print(sess.run(dataDiv))
print('end!')

结果:

8
12
4
3.0
end!

4、tensorflow矩阵基础

一般矩阵定义语法:

#一维矩阵:1行4列
data1 = tf.constant([1,2,3,4])
#一维矩阵:4行1列
data2 = tf.constant([[1],[2],[3],[4]])
#二维矩阵:2行2列
data3 = tf.constant([[1,2],[3,4]])

矩阵定义方式:tf.constant( [ [ ] , [ ] ] )
矩阵以中括号表示,一个中括号表示一维,中括号内含中括号表示‘行’

4.1矩阵运算

矩阵乘法运算语句:

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 和 rank > 1的张量.
b:与 a 具有相同类型和 rank.
transpose_a:如果 True,a 在乘法之前转置.
transpose_b:如果 True,b 在乘法之前转置.
adjoint_a:如果 True,a 在乘法之前共轭和转置.
adjoint_b:如果 True,b 在乘法之前共轭和转置.
a_is_sparse:如果 True,a 被视为稀疏矩阵.
b_is_sparse:如果 True,b 被视为稀疏矩阵.
name:操作名称(可选).

参考资料:https://www.w3cschool.cn/tensorflow_python/tensorflow_python-l5x72feg.html
代码示例:

data1 = tf.constant([[6,6]])
data2 = tf.constant([[2],[2]])
data3 = tf.constant([[3],[3]])
data4 = tf.constant([[1,2],[3,4],[5,6]])
matMul = tf.matmul(data1,data2) #tf.matmul:矩阵乘法
matMul2 = tf.multiply(data1,data2) #tf.multiply:普通乘法
matAdd = tf.add(data2,data3) #tf.add:加法
with tf.Session() as sess:
    print(sess.run(matMul))
    print(sess.run(matMul2))
    print(sess.run(matAdd))
    print(sess.run([matMul,matAdd]))

结果:

[[24]]
[[12 12]
 [12 12]]
[[5]
 [5]]
[array([[24]]), array([[5],
       [5]])]

4.2特殊矩阵

1、空矩阵

tf.zeros(shape, dtype=dtypes.float32, name=None)

2、全一矩阵

tf.ones(shape, dtype=dtypes.float32, name=None)

shape:输入张量维度
dtype:张量类型
name:名称

3、填充矩阵

tf.fill(dims, value, name=None)

dims:输入张量维度,如[2,3]等
value:输入填充常数
name:名称

4、类比零矩阵

tf.zeros_like(input,dtype=None,name=None)

input:输入类比矩阵
dtype:张量类型
name:名称

5、等分矩阵

tf.linspace(start, stop, num, name=None)

start:输入起始值
stop:输入终止值
num:输入等分数
name:名称

6、随机数矩阵

tf.random_uniform(shape,minval=0,maxval=None,
    dtype=tf.float32,seed=None,name=None)

shape:一维整数张量或 Python 数组.输出张量的形状.
minval:生成的随机值范围的下限;默认为0.
maxval:生成的随机值范围的上限.如果 dtype 是浮点,则默认为1 .
dtype:输出的类型:float16、float32、float64、int32、orint64.
seed:一个 Python 整数.用于为分布创建一个随机种子.查看 tf.set_random_seed 行为.
name:操作的名称(可选).

参考资料:https://blog.csdn.net/weixin_36670529/article/details/93470877

代码示例:

mat0 = tf.zeros([2,3])
mat1 = tf.ones([3,2])
mat2 = tf.fill([2,3],3)
mat3 = tf.zeros_like(mat2)
mat4 = tf.linspace(0.0,2.0,11)
mat5 = tf.random_uniform([2,3],1,2)
with tf.Session() as sess:
    print('空矩阵:','\n',sess.run(mat0))
    print('全一矩阵:','\n',sess.run(mat1))
    print('填充矩阵:','\n',sess.run(mat2))
    print('类比零矩阵:','\n',sess.run(mat3))
    print('等分矩阵:','\n',sess.run(mat4))
    print('随机矩阵:','\n',sess.run(mat5))

结果:

空矩阵: 
 [[0. 0. 0.]
 [0. 0. 0.]]
全一矩阵: 
 [[1. 1.]
 [1. 1.]
 [1. 1.]]
填充矩阵: 
 [[3 3 3]
 [3 3 3]]
类比零矩阵: 
 [[0 0 0]
 [0 0 0]]
等分矩阵: 
 [0.        0.2       0.4       0.6       0.8       1.        1.2
 1.4       1.6       1.8000001 2.       ]
随机矩阵: 
 [[1.441177  1.7821869 1.3769927]
 [1.6472073 1.882083  1.627292 ]]
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值