最近在学习Tensorflow,软件配置是Pycharm+Tensorflow-gpu+Anaconda,具体是在Win7上,先安装Anaconda,然后在Anaconda上安装Tensorflow-gpu版本,再安装Nvidia Cuda 9.0,配置上cudnn 9.1,最后在Pycharm上编辑运行Tensorflow的python文件。安装教程在此不再累赘,有需要的读者可自行百度。有感于网上的Tensorflow教程或者是以实现一个具体例子的形式,或者是对基础操作的介绍十分粗略,很少对基础操作分门别类地介绍,特在此以分类的形式对学到的基础操作作简单介绍。
import tensorflow as tf
import numpy as np
函数原型:
tf.constant(
value,
dtype=None,
shape=None,
name='Const',
verify_shape=False
)
说明:
value:常量数值,可以是一个标量,或者一个列表
dtype:数据类型,可选tf.float32,tf.float64等
shape:表示张量的形状,即维数以及每一维的大小
name:可以是任何内容的字符串
verify_shape:默认为False,如果修改为True的话表示检查value的形状与shape是否相符,如果不符会报错。
举例:
# Constant 1-D Tensor populated with value list.
tensor = tf.constant([1, 2, 3, 4, 5, 6, 7]) => [1 2 3 4 5 6 7]
# Constant 2-D tensor populated with scalar value -1.
tensor = tf.constant(-1.0, shape=[2, 3]) => [[-1. -1. -1.]
[-1. -1. -1.]]
原型:
tf.Variable.init(
initial_value,
trainable=True,
collections=None,
validate_shape=True,
name=None
)
说明:
initial_value:变量的初始值
trainable:如果为True,会把它加入到GraphKeys.TRAINABLE_VARIABLES,才能对它使用Optimizer
collections:指定该图变量的类型
validate_shape:如果为False,则不进行类型和维度检查
name:变量名称
举例:
A = tf.Variable([[1,2,3], [4,5,6], [7,8,9]], dtype=tf.float32)
原型:
tf.placeholder(
dtype,
shape=None,
name=None
)
说明:
dtype:数据类型,可选tf.float32,tf.float64等
shape:表示张量的形状,即维数以及每一维的大小
name:可以是任何内容的字符串
占位符变量不用赋初值,是调用的时候才赋值,其思想类似模型的输入。一般与feed_dict联用,feed_dict用于给占位符变量赋值。举例:
x = tf.placeholder(tf.float32, shape=(1024, 1024)) # 创建占位符变量x
y = tf.matmul(x, x)
with tf.Session() as sess:
print(sess.run(y)) # 错误: 因为x没有被赋值
rand_array = np.random.rand(1024, 1024)
print(sess.run(y, feed_dict={x: rand_array})) # 运行成功
一个图启动之前所有的variable必须都要初始化,初始化操作相当于给variable赋初值。其中,最简单的方法就是global_variables_initializer(),可以直接初始化所有变量:
# 初始化所有variables 的op
init_op = tf.global_variables_initializer()
# 在session中启动graph.
with tf.Session() as sess:
# 启动这个op
sess.run(init_op)
# ...现在可以运行使用variables的op...
但有时需要单独为变量初始化,可以使用initializer:
A = tf.Variable([[1,2,3], [4,5,6], [7,8,9]], dtype=tf.float32)
#在session中启动graph
with tf.Session() as sess:
# variable初始化
sess.run(A.initializer)
# 以下可以运行使用'A'的op
启动session有三种方式,分别是:
方式一:
a = tf.add(2, 5)
b = tf.mul(a, 3)
#启动session
sess = tf.Session()
#运行
print sess.run(a)
print sess.run(a)
#关闭session
sess.close()
方式二:
a = tf.add(2, 5)
b = tf.mul(a, 3)
#启动session
with tf.Session() as sess:
print sess.run(a)
print sess.run(b)
#关闭session
sess.close()
方式三:
sess = tf.InteractiveSession()
a = tf.constant(5)
b = tf.constant(3)
c = tf.mul(a,b)
d = tf.add(a,b)
e = tf.add(c,d)
output = sess.run(e)
print output
#关闭session
sess.close()