tf中的op、placeholder
学习博客:https://www.jianshu.com/p/31880cc88ae7
tensorflow是一个“符号式编程框架”,所有的计算步骤(包括数据定义等等)都要在一个graph中事先定义好,然后通过session来执行这个graph(全部或部分),得到结果。
所以可见在tf中session是 最重要的部分之一
一开始看到很多 博文都在写op,不懂在说什么,所以查了一下:
op就是操作
所谓op就是operation,“操作”的意思。在tensorflow中op不仅包括加、减、乘、除等所有计算方式,同时也包括常量定义、变量定义、占位符定义等等。例如tf.constant(),tf.add(),tf.mul()等等都是op,都要通过session运行,才能得到结果
所以 这里来说,op就是操作的统称很多人会以为tf.Variable()也是op,其实不是。tensorflow里,一般,首字母大写的是类,而首字母小写的才是op。
tf.Variable()就是一个类,不过它包含了各种op,比如你定义了x = tf.Variable([2, 3], name = 'vector'),那么x就具有如下op:
x.initializer # 对x做初始化,即赋值为初始值[2, 3]
x.value() # 获取x的值
x.assign(...) # 赋值操作
x.assign_add(...) # 加法操作
x.initializer # 对x做初始化,即赋值为初始值[2, 3]
x.value() # 获取x的值
x.assign(...) # 赋值操作
x.assign_add(...) # 加法操作
顺便在这片 博文中也懂了什么是placeholder
placeholder,翻译过来就是“占位符”。其实它类似于函数里的自变量。比如z = x + y,那么x和y就可以定义成占位符。占位符,顾名思义,就这是占一个位子,平时不用关心它们的值,当你做运算的时候,你再把你的数据灌进去就行了
1 2 3 4 5 6 7 | # 以下在默认graph中定义op a = tf.placeholder(tf.float32, shape = [ 3 ]) # a是一个有三个元素的向量 b = tf.constant([ 5 , 5 , 5 ], tf.float32) c = a + b # 以下定义session with tf.Session() as sess: print ( sess.run(c, feed_dict = {a: [ 1 , 2 , 3 ]})) # 把[1, 2, 3]灌到a里去 |
1 2 3 4 5 6 7 8 9 10 11 12 | import tensorflow as tf # input1 = tf.placeholder(tf.float32,[2,2]) #这里加[2,2]就是 定义input1是一个两行两列的运算 input1 = tf.placeholder(tf.float32) input2 = tf.placeholder(tf.float32) output = tf.multiply(input1,input2) #mul就是进行乘法运算 with tf.Session() as sess: print (sess.run(output,feed_dict = {input1:[ 7. ],input2:[ 2. ]})) #feed_dict表示的是字典 所以input1:[7.],input2:[2.]是键值对的形式 #7.是 7.0 |
这个代码中multiply一开始是mul,运行的时候会报错,因为mul升级到multiply了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!