2022.5.20深度学习技术学习(BETA版)TensorFlow框架中的张量与变量(后期会不断完善)
固定值张量
进入
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UB9pC7eA-1653011362369)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps1.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zrsn0PeD-1653011362370)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps2.jpg)]
需要写一个
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hw57Yqcp-1653011362371)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps3.jpg)]
3行4列矩阵
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hY82LH9o-1653011362371)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps4.jpg)]
指定类型的话
看值的话
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UvQPuSxD-1653011362372)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps5.jpg)]
学过numpy
用numpy创建数组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sqhzp0iC-1653011362372)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps6.jpg)]
跟上面类似,只不过上面是用tensorflow创建数组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w07rXsd4-1653011362372)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps7.jpg)]创建一个3行4列全0数组
随机值张量
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXLWnscc-1653011362373)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps8.jpg)]
Tensorflow实习正态分布
两种方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-odSyxs5q-1653011362373)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps9.jpg)]
确定一个绝对值在一个区间(一般用truncated比较多一些)
例如(stdv为标准差)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ywBa665W-1653011362374)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps10.jpg)]
看值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]
一般来说做类型修改
(浮点型变整型)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E3SPBie9-1653011362376)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps15.jpg)]
形状变换(2,3)-----(1.6)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r9xvz1cU-1653011362377)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps16.jpg)]
主要点(重要)只用这个[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M9LOC9cS-1653011362377)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps17.jpg)]
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-rUFwfY0O-1653011362398)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17484\wps52.jpg)]
用这个方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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()
*命名空间的目的,为了让代码模块化*