2022.5.20深度学习技术学习(BETA版)TensorFlow框架中的张量与变量(后期会不断完善)

阅读此文章需要结合我上传的word文档阅读。
此篇仅为个人学习笔记,特此说明

固定值张量

进入在这里插入图片描述在这里插入图片描述需要写一个
在这里插入图片描述

3行4列矩阵

指定类型的话
看值的话
在这里插入图片描述
学过numpy
用numpy创建数组

跟上面类似,只不过上面是用tensorflow创建数组


创建一个3行4列全0数组

随机值张量在这里插入图片描述

Tensorflow实习正态分布

两种方法
在这里插入图片描述

确定一个绝对值在一个区间(一般用truncated比较多一些)

例如(stdv为标准差)

在这里插入图片描述

看值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eb7jQ2H9-1653011362374)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps11.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Sp2qo1D-1653011362375)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps12.jpg)]

偏离正中央,我们就多弄几个

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ffxZa9y2-1653011362375)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps13.jpg)]

这个就是截断

其他创建张量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jx7P8eVh-1653011362376)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps14.jpg)]

一般来说做类型修改

(浮点型变整型)在这里插入图片描述

形状变换(2,3)-----(1.6)
在这里插入图片描述

主要点(重要)只用这个在这里插入图片描述

Demo243.py

代码如下:

import tensorflow as tf

def tensor_demo():

‘’’

张量的演示

‘’’

tensor1 = tf.constant(4.0)

tensor2 = tf.constant([1, 2, 3, 4])

linear_squares = tf.constant([[4], [9], [16], [25]], dtype=tf.int32)

print(‘tensor1:\n’, tensor1)

print(‘tensor2:\n’, tensor2)

print(‘linear_squares_before:\n’, linear_squares)

# 张量类型的修改

t_cast = tf.cast(linear_squares, dtype=tf.float32)

print(‘linear_squares_after:\n’, linear_squares)

print(‘t_cast:\n’, t_cast)

if name == ‘main’:

tensor_demo()

解释如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ni64eOrR-1653011362378)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps18.jpg)]

转换之前的张量,改变他的类型,返回值为t_cast,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SmssOv0V-1653011362378)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps19.jpg)]

打印出来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-brleIRJS-1653011362379)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps20.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YMeaQuxc-1653011362379)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps21.jpg)]

说明t_cast不会改变之前张量的值,只会返回一个不同数据类型的值

形状的改变

(动态形状,静态形状)

定义三个张量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3RoHAkEb-1653011362380)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps22.jpg)]

先看看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3uqwM4t0-1653011362382)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps23.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j5ilj9zm-1653011362383)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps24.jpg)]

这些都是静态形状(原始元素都是固定的)

Tensor1

Tensor2

Linear_squares_before

动态形状

无论在什么情况下,只要你想改变就能改变

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qHfvpTna-1653011362383)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps25.jpg)]

什么情况下可以改变形状呢?

之前形状没有确定下来的时候

shape如果写上这个,不固定行和列(Demo243)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S1wqRHUN-1653011362384)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps26.jpg)]

还有一种写法不固定行和列

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kovd1ZhG-1653011362384)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps27.jpg)]

行和列都确定下来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Nl29NDJ-1653011362385)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps28.jpg)]

分别打印出来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nt6H7mcc-1653011362385)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps29.jpg)]

看看效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UEvjmJ40-1653011362386)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps30.jpg)]

代码如下

import tensorflow as tf

def tensor_demo():

‘’’

张量的演示

‘’’

tensor1 = tf.constant(4.0)

tensor2 = tf.constant([1, 2, 3, 4])

linear_squares = tf.constant([[4], [9], [16], [25]], dtype=tf.int32)

print(‘tensor1:\n’, tensor1)

print(‘tensor2:\n’, tensor2)

print(‘linear_squares_before:\n’, linear_squares)

# 张量类型的修改

t_cast = tf.cast(linear_squares, dtype=tf.float32)

print(‘linear_squares_after:\n’, linear_squares)

print(‘t_cast:\n’, t_cast)

# 更新/改变静态形状

# 定义占位符

# 没有完全固定下来的静态形状

a_p = tf.placeholder(dtype=tf.float32, shape=[None,None])

b_p = tf.placeholder(dtype=tf.float32, shape=[None,10])

c_p = tf.placeholder(dtype=tf.float32, shape=[3,2])

print(‘a_p:\n’, a_p)

print(‘b_p:\n’, b_p)

print(‘c_p:\n’, c_p)

if name == ‘main’:

tensor_demo()

问号代表没有固定下来的静态形状

不是随便****改变形状****的

传入参数是有要求的

维度只能在那个维度(不能够改变维度的)【维数不能改】

还有一个就是第二个情况,后面那个为10

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hBuGCCVA-1653011362386)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps31.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LPO3DyXJ-1653011362387)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps32.jpg)]

【静态形状只能跟新,没有固定下来的部分】

静态形状在更新的时候,只能更新没有完全固定价格下来的部分

代码如下

import tensorflow as tf

def tensor_demo():

‘’’

张量的演示

‘’’

tensor1 = tf.constant(4.0)

tensor2 = tf.constant([1, 2, 3, 4])

linear_squares = tf.constant([[4], [9], [16], [25]], dtype=tf.int32)

print(‘tensor1:\n’, tensor1)

print(‘tensor2:\n’, tensor2)

print(‘linear_squares_before:\n’, linear_squares)

# 张量类型的修改

t_cast = tf.cast(linear_squares, dtype=tf.float32)

print(‘linear_squares_after:\n’, linear_squares)

print(‘t_cast:\n’, t_cast)

# 更新/改变静态形状

# 定义占位符

# 没有完全固定下来的静态形状

a_p = tf.placeholder(dtype=tf.float32, shape=[None,None])

b_p = tf.placeholder(dtype=tf.float32, shape=[None,10])

c_p = tf.placeholder(dtype=tf.float32, shape=[3,2])

print(‘a_p:\n’, a_p)

print(‘b_p:\n’, b_p)

print(‘c_p:\n’, c_p)

# 更新形状未确定的部分

a_p.set_shape([2, 3])

b_p.set_shape([2, 10])

print(‘a_p:\n’, a_p)

print(‘b_p:\n’, b_p)

if name == ‘main’:

tensor_demo()

静态形状不能跨阶段

如果非要改的话

就利用动态形状改变

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bUNu2zkk-1653011362387)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps33.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ORPsg9ZC-1653011362388)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps34.jpg)]

用reshape方式改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vHvVagwV-1653011362388)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps35.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8K2BeV8I-1653011362389)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps36.jpg)]

或者改c_p[本来3行2列的]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hD3cbfmr-1653011362389)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps37.jpg)]

改为2行3列

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zFAFMu7P-1653011362390)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps38.jpg)]

形状可以变(3,2)----(3,2,1)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vk06A784-1653011362390)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps39.jpg)]

行数列数总数不能变

不能改成例如(3,2)---->(3,2,2)

这样改同样会报错,概括

tf.reshape 改变动态形状
tf.set_shape 改变静态形状

import tensorflow as tf

def tensor_demo():

‘’’

张量的演示

‘’’

tensor1 = tf.constant(4.0)

tensor2 = tf.constant([1, 2, 3, 4])

linear_squares = tf.constant([[4], [9], [16], [25]], dtype=tf.int32)

print(‘tensor1:\n’, tensor1)

print(‘tensor2:\n’, tensor2)

print(‘linear_squares_before:\n’, linear_squares)

# 张量类型的修改

t_cast = tf.cast(linear_squares, dtype=tf.float32)

print(‘linear_squares_after:\n’, linear_squares)

print(‘t_cast:\n’, t_cast)

# 更新/改变静态形状

# 定义占位符

# 没有完全固定下来的静态形状

a_p = tf.placeholder(dtype=tf.float32, shape=[None,None])

b_p = tf.placeholder(dtype=tf.float32, shape=[None,10])

c_p = tf.placeholder(dtype=tf.float32, shape=[3,2])

print(‘a_p:\n’, a_p)

print(‘b_p:\n’, b_p)

print(‘c_p:\n’, c_p)

# 更新形状未确定的部分

#a_p.set_shape([2, 3]) # 尝试 a_p.set_shape([2, 3, 1])

#b_p.set_shape([2, 10]) # 尝试 b_p.set_shape([2, 5])

# 动态形状的改变

a_p_reshape = tf.reshape(a_p, shape=[2,3,1])

print(‘a_p:\n’, a_p)

print(‘a_p_reshape:\n’, a_p_reshape)

c_p_reshape = tf.reshape(c_p, shape=[2,3])

print(‘c_p:\n’, c_p)

print(‘c_p_reshape:\n’, c_p_reshape)

if name == ‘main’:

tensor_demo()

张量的数学运算(有API)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BGQhGTzj-1653011362391)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps40.jpg)]

变量OP

在tensorflow里面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kQLlIDyF-1653011362391)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps41.jpg)]

是在里面专门的OP组件

可以把程序里面的数据存储保存下来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nCronybN-1653011362392)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps42.jpg)]

深度学习的目的,为了解决一个模型,那么如何存储

权重为模型参数,希望模型参数能不断迭代更新,为了让模型参数保存下来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IIMEb156-1653011362393)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps43.jpg)]

具体代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zNdSLXK3-1653011362393)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps44.jpg)]
这个比较简单

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OEszx8G4-1653011362394)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps45.jpg)]

c是tensor,b,a为variable

开启会话

用sess.Run,参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pIDaM2PJ-1653011362394)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps46.jpg)]
接受

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PshGnQUY-1653011362395)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps47.jpg)]

结果只有警告

不担心(表示还没初始化值)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UbqUpGKN-1653011362395)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps48.jpg)]

需要的操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2CtR95B-1653011362396)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps49.jpg)]

放在这里

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2sGMyMEw-1653011362396)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps50.jpg)]

还要记得运行初始化(demo251c)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KI7lwH3C-1653011362397)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps51.jpg)]

代码如下

import tensorflow as tf

def variable_demo():

‘’’

变量的演示

‘’’

a = tf.Variable(initial_value=50)

b = tf.Variable(initial_value=40)

c = tf.add(a, b)

print(‘a:\n’, a)

print(‘b:\n’, b)

print(‘c:\n’, c)

# 初始化变量

init = tf.global_variables_initializer()

# 开启会话

with tf.Session() as sess:

​ #运行初始化

​ sess.run(init)

​ a_value, b_value, c_value = sess.run([a,b,c])

​ print(‘a_value:\n’, a_value)

​ print(‘b_value:\n’, b_value)

​ print(‘c_value:\n’, c_value)

if name == ‘main’:

variable_demo()

在这里插入图片描述

用这个方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hYtPdc3V-1653011362399)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps53.jpg)]

Demo252a

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OlCFMlY3-1653011362399)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps54.jpg)]

原来[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0jt9XW3X-1653011362400)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps55.jpg)]

运行之后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1PNRrrMK-1653011362400)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps56.jpg)]

希望a,b在同一个命名空间,c在不同命名空间

就是再写一个

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NrHCMIui-1653011362401)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps57.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d5CKA9EN-1653011362401)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps58.jpg)]

代码如下

import tensorflow as tf

def variable_demo():

‘’’

变量的演示

‘’’

with tf.variable_scope(‘my_score’):

​ a = tf.Variable(initial_value=50)

​ b = tf.Variable(initial_value=40)

with tf.variable_scope(‘your_score’):

​ c = tf.add(a, b)

print(‘a:\n’, a)

print(‘b:\n’, b)

print(‘c:\n’, c)

# 初始化变量

init = tf.global_variables_initializer()

# 开启会话

with tf.Session() as sess:

​ #运行初始化

​ sess.run(init)

​ a_value, b_value, c_value = sess.run([a,b,c])

​ print(‘a_value:\n’, a_value)

​ print(‘b_value:\n’, b_value)

​ print(‘c_value:\n’, c_value)

if name == ‘main’:

variable_demo()

*命名空间的目的,为了让代码模块化*

variable_demo():

‘’’

变量的演示

‘’’

with tf.variable_scope(‘my_score’):

​ a = tf.Variable(initial_value=50)

​ b = tf.Variable(initial_value=40)

with tf.variable_scope(‘your_score’):

​ c = tf.add(a, b)

print(‘a:\n’, a)

print(‘b:\n’, b)

print(‘c:\n’, c)

# 初始化变量

init = tf.global_variables_initializer()

# 开启会话

with tf.Session() as sess:

​ #运行初始化

​ sess.run(init)

​ a_value, b_value, c_value = sess.run([a,b,c])

​ print(‘a_value:\n’, a_value)

​ print(‘b_value:\n’, b_value)

​ print(‘c_value:\n’, c_value)

if name == ‘main’:

variable_demo()

*命名空间的目的,为了让代码模块化*

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值