这篇文章以几个具体的例子来说明一下如何使用tensorflow进行编码,通过简单的变量/常量的加减乘除运算来熟悉tensorflow。
例1: 使用表达式常量运算
代码片段
a = tf.constant(2)
b = tf.constant(3)
add = a + b
print("use a + b directly: a = 2,b=3")
print(tf.Session().run(add))
简要说明:
前面已经提到了tf的数据类型以及session和operation等概念,这个例子定义了两个常量,直接利用session的run函数可以对以表达式定义(a+b)的add操作进行运算,从而实现了2+3=5
例2: 使用tf函数进行常量运算
代码片段
a = tf.constant(2)
b = tf.constant(3)
add = tf.add(a,b)
print(tf.Session().run(add))
简要说明:
与例1不同的地方在于操作add的定义使用tf.add进行
例3: 变量运算与赋值
代码片段
c = tf.placeholder(tf.int32,name="c")
d = tf.placeholder(tf.int32,name="d")
print("c=2,d=0,tf.Session().run(add,feed_dict={c:2,d:0}")
print(tf.Session().run(add,feed_dict={c:2,d:0}))
简要说明:
使用placeholder预设占位符,在运算时通过feed_dict传入变量值进行运算
例4: 变量方式传递给feed_dict
代码片段
c = tf.placeholder(tf.int32,name="c")
d = tf.placeholder(tf.int32,name="d")
feed_data={c:32,d:10}
add = tf.add(c,d)
print(tf.Session().run(add,feed_dict=feed_data))
简要说明:
例3的另一种方式,通过变量的方式传递给feed_dict
例5: 表达式进行加减乘除
代码片段
a = tf.constant(2)
b = tf.constant(3)
with tf.Session() as session:
print("a = " + str(session.run(a)))
print("b = " + str(session.run(b)))
print("a + b = " + str(session.run(a+b)))
print("a - b = " + str(session.run(a-b)))
print("a * b = " + str(session.run(a*b)))
print("a / b = " + str(session.run(a/b)))
简要说明:
使用python的with语句,表达式的方式进行加减乘除的运算
例6: 使用tf函数进行加减乘除
代码片段
a = tf.constant(2)
b = tf.constant(3)
with tf.Session() as session:
print("a = " + str(session.run(a)))
print("b = " + str(session.run(b)))
func=tf.add(a,b)
print("a + b = " + str(session.run(func)))
func=tf.subtract(a,b)
print("a - b = " + str(session.run(func)))
func=tf.multiply(a,b)
print("a * b = " + str(session.run(func)))
func=tf.divide(a,b)
print("a / b = " + str(session.run(func)))
简要说明:
使用tf.add/tf.subtract/tf.multiply/tf.divide进行加减乘除,注意早期版本api有变化比如tf.sub已经不存在。
例7: 线性公式(表达式):y=w*x+b
代码片段
with tf.Session() as session:
w=tf.constant(2)
b=tf.constant(2)
x=tf.placeholder(tf.int32)
y=w*x + b
print("y=w*x+b=" + str(session.run(y,feed_dict={x:20})))
简要说明:
这个简单的例子可以看出常量/变量的使用,以及变量使用placeholder进行占位以及使用feed_dict进行运行前赋值
例8: 线性公式(tf函数):y=w*x+b
代码片段
with tf.Session() as session:
w=tf.constant(2)
b=tf.constant(2)
x=tf.placeholder(tf.int32)
y=tf.add(tf.multiply(w,x),b)
print("y=w*x+b=" + str(session.run(y,feed_dict={x:20})))
简要说明:
使用tf函数进行组合w*x+b的运算
例子代码
liumiaocn:Notebook liumiao$ cat basic-operation-1.py
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
print("##Example 1: Constant: a + b")
a = tf.constant(2)
b = tf.constant(3)
add = a + b
print("use a + b directly: a = 2,b=3")
print(tf.Session().run(add))
print("\n##Example 2: use tf.add(a,b): a=2,b=3")
add = tf.add(a,b)
print(tf.Session().run(add))
print("")
print("##Example 3: feed_dict + placeholder")
c = tf.placeholder(tf.int32,name="c")
d = tf.placeholder(tf.int32,name="d")
print("c=2,d=0,tf.Session().run(add,feed_dict={c:2,d:0}")
print(tf.Session().run(add,feed_dict={c:2,d:0}))
print("\n##Example 4: feed_data={c:32,d:10}, tf.add(c,d)")
feed_data={c:32,d:10}
add = tf.add(c,d)
print(tf.Session().run(add,feed_dict=feed_data))
print("\n##Example 5: use with statement : expression")
with tf.Session() as session:
print("a = " + str(session.run(a)))
print("b = " + str(session.run(b)))
print("a + b = " + str(session.run(a+b)))
print("a - b = " + str(session.run(a-b)))
print("a * b = " + str(session.run(a*b)))
print("a / b = " + str(session.run(a/b)))
print("\n##Example 6: use with statement : tf.function")
with tf.Session() as session:
print("a = " + str(session.run(a)))
print("b = " + str(session.run(b)))
func=tf.add(a,b)
print("a + b = " + str(session.run(func)))
func=tf.subtract(a,b)
print("a - b = " + str(session.run(func)))
func=tf.multiply(a,b)
print("a * b = " + str(session.run(func)))
func=tf.divide(a,b)
print("a / b = " + str(session.run(func)))
print("\n##Example 7: y=w*x +b : expression")
with tf.Session() as session:
w=tf.constant(2)
b=tf.constant(2)
x=tf.placeholder(tf.int32)
y=w*x + b
print("y=w*x+b=" + str(session.run(y,feed_dict={x:20})))
print("\n##Example 8: y=w*x +b : tf.function")
with tf.Session() as session:
w=tf.constant(2)
b=tf.constant(2)
x=tf.placeholder(tf.int32)
y=tf.add(tf.multiply(w,x),b)
print("y=w*x+b=" + str(session.run(y,feed_dict={x:20})))
liumiaocn:Notebook liumiao$
执行结果
liumiaocn:Notebook liumiao$ python basic-operation-1.py
##Example 1: Constant: a + b
use a + b directly: a = 2,b=3
5
##Example 2: use tf.add(a,b): a=2,b=3
5
##Example 3: feed_dict + placeholder
c=2,d=0,tf.Session().run(add,feed_dict={c:2,d:0}
5
##Example 4: feed_data={c:32,d:10}, tf.add(c,d)
42
##Example 5: use with statement : expression
a = 2
b = 3
a + b = 5
a - b = -1
a * b = 6
a / b = 0
##Example 6: use with statement : tf.function
a = 2
b = 3
a + b = 5
a - b = -1
a * b = 6
a / b = 0.6666666666666666
##Example 7: y=w*x +b : expression
y=w*x+b=42
##Example 8: y=w*x +b : tf.function
y=w*x+b=42
liumiaocn:Notebook liumiao$
总结
当然,tensorflow不是用来做加减乘除的,常见的模型的积木化,调用简单,在后续的实例中将可以清晰地看到这一点