tf.Variable()、tf.get_variable()和tf.placeholder()
分类:
TensorFlow
1.tf.Variable()
tf.Variable(initializer,name) |
功能:tf.Variable()创建变量时,name属性值允许重复,检查到相同名字的变量时,由自动别名机制创建不同的变量。
参数:
- initializer:初始化参数;
- name:可自定义的变量名称
举例:
1 2 3 4 5 6 7 8 9 | import tensorflow as tf v1 = tf.Variable(tf.random_normal(shape = [ 2 , 3 ],mean = 0 ,stddev = 1 ),name = 'v1' ) v2 = tf.Variable(tf.constant( 2 ),name = 'v2' ) v3 = tf.Variable(tf.ones([ 2 , 3 ]),name = 'v3' ) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print (sess.run(v1)) print (sess.run(v2)) print (sess.run(v3)) |
结果如下:
2.tf.get_variable()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | tf.get_variable( name, shape = None , dtype = None , initializer = None , regularizer = None , trainable = None , collections = None , caching_device = None , partitioner = None , validate_shape = True , use_resource = None , custom_getter = None , constraint = None , synchronization = tf.VariableSynchronization.AUTO, aggregation = tf.VariableAggregation.NONE ) |
功能:tf.get_variable创建变量时,会进行变量检查,当设置为共享变量时(通过scope.reuse_variables()或tf.get_variable_scope().reuse_variables()),检查到第二个拥有相同名字的变量,就返回已创建的相同的变量;如果没有设置共享变量,则会报[ValueError: Variable varx alreadly exists, disallowed.]的错误。
参数:
- name:新变量或现有变量的名称
- shape:新变量或现有变量的形状
- dtype:新变量或现有变量的类型(默认为DT_FLOAT)。
- initializer:变量初始化的方式
初始化方式:
- tf.constant_initializer:常量初始化函数
- tf.random_normal_initializer:正态分布
- tf.truncated_normal_initializer:截取的正态分布
- tf.random_uniform_initializer:均匀分布
- tf.zeros_initializer:全部是0
- tf.ones_initializer:全是1
- tf.uniform_unit_scaling_initializer:满足均匀分布,但不影响输出数量级的随机值
举例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | v1 = tf.Variable(tf.random_normal(shape = [ 2 , 3 ],mean = 0 ,stddev = 1 ),name = 'v1' ) v2 = tf.Variable(tf.random_normal(shape = [ 2 , 3 ],mean = 0 ,stddev = 1 ),name = 'v1' ) v3 = tf.Variable(tf.ones([ 2 , 3 ]),name = 'v3' ) a1 = tf.get_variable(name = 'a1' , shape = [ 2 , 3 ], initializer = tf.random_normal_initializer(mean = 0 , stddev = 1 )) a2 = tf.get_variable(name = 'a2' , shape = [ 2 , 3 ], initializer = tf.random_normal_initializer(mean = 0 , stddev = 1 )) a3 = tf.get_variable(name = 'a3' , shape = [ 2 , 3 ], initializer = tf.ones_initializer()) with tf.Session() as sess: sess.run(tf.initialize_all_variables()) print (sess.run(v1)) print (sess.run(v2)) print (sess.run(v3)) print (sess.run(a1)) print (sess.run(a2)) print (sess.run(a3)) |
v1和v2的参数完全相同,创建时候不会报错;a1和a2的参数完全相同,创建时候会报错
3.tf.placeholder()
tf.placeholder( dtype, shape = None , name = None ) |
功能:在tensorflow中类似于函数参数,运行时必须传入值。
TensorFlow链接:https://tensorflow.google.cn/api_docs/python/tf/placeholder?hl=en
参数:
- dtype:要进给的张量中的元素类型。常用的是tf.float32,tf.float64等数值类型。
- shape:要进给的张量的形状(可选)。如果未指定形状,则可以提供任何形状的张量。默认是None,就是一维值,也可以是多维,比如[2,3], [None, 3]表示列是3,行不定。
- name:操作的名称(可选)。
举例:
1 2 3 4 5 6 7 | input1 = tf.placeholder(tf.float32) input2 = tf.placeholder(tf.float32) output = tf.multiply(input1, input2) with tf.Session() as sess: print (sess.run(output, feed_dict = {input1: [ 23. ], input2: [ 4. ]})) # [92.] |
参考文献:
【1】Tensorflow——tf.Variable()、tf.get_variable()和tf.placeholder()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现