Tensorflow学习笔记:基础篇

文章目录

  • 前言
  • 模板导入
  • 输入输出OP
    • 创建常量tf.constant
    • 创建变量tf.Variable
    • 创建占位符变量tf.placeholder
  • 图操作
    • 变量初始化
    • 启动图

前言

最近在学习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

输入输出OP

创建常量tf.constant

函数原型:

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

原型:

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

原型:

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()

你可能感兴趣的:(tensorflow,tensorflow)