学习进度笔记-TensorFlow基本知识总结-1

一、什么是TensorFlow?

  TensorFlow是全面的深度学习框架支持非常全面不是专门为客户端设计

特点:

1、真正的可移植性: 引入各种计算设备的支持包括CPU/GPU/TPU,以及能够很好地运行在移动端, 如安卓设备、ios、树莓派等等

2、多语言支持: Tensorflow 有一个合理的c++使用界面,也有一个易用的python使用界面来构建和 执行你的graphs,你可以直接写python/c++程序。

3、高度的灵活性与效率: TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库 能够灵活进行组装图,执行图。随着开发的进展,Tensorflow的效率不算在提高

4、支持:TensorFlow 由谷歌提供支持,谷歌投入了大量精力开发 TensorFlow,它希望 TensorFlow 成为机器学习研究人员和开发人员的通用语言

二、图

  图的创建:

  tf.Graph()

  使用新创建的图

   g = tf.Graph()

  with g.as_default():

    a = tf.constant(1.0)

    assert c.graph is g

  图默认已经注册,一组表示 tf.Operation计算单位的对象和tf.Tensor 表示操作之间流动的数据单元的对象

  获取调用: tf.get_default_graph() op、sess或者tensor 的graph属性

三、op(运算)

 四、会话

tf.Session()

运行TensorFlow操作图的类,使用默认注册的图(可以指定运行图) 会话资源 会话可能拥有很多资源,

如 tf.Variable,tf.QueueBase 和tf.ReaderBase,会话结束后需要进行资源释放 sess = tf.Session() sess.run(...) sess.close()

使用上下文管理器 with tf.Session() as sess: sess.run(...) config=tf.ConfigProto(log_device_placement=True)

交互式:tf.InteractiveSession()

五、会话中的run()方法

run(fetches, feed_dict=None,graph=None) 运行ops和计算tensor 嵌套列表,元组, namedtuple,dict或OrderedDict(重载的运算符也能运行)

feed_dict 允许调用者覆盖图中指定张量的值,提供给 placeholder使用

返回值异常

RuntimeError:如果它Session处于无效状态(例如已关闭)。

TypeError:如果fetches或feed_dict键是不合适的类型。

ValueError:如果fetches或feed_dict键无效或引用 Tensor不存在。

六、测试代码

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

# 创建一张图包含了一组op和tensor,上下文环境
# op:只要使用tensorflow的API定义的函数都是OP
# tensor:就指代的是数据

g = tf.Graph()

print(g)
with g.as_default():
    c = tf.constant(11.0)
    print(c.graph)

# 实现一个加法运算
a = tf.constant(5.0)
b = tf.constant(6.0)

sum1 = tf.add(a, b)

# 默认的这张图,相当于是给程序分配一段内存
graph = tf.get_default_graph()

print(graph)

# 不是op不能运行
var1 = 2.0
# var2 = 3
# sum2 = var1 + var2

# 有重载的机制,默认会给运算符重载成op类型
sum2 = a + var1

print(sum2)

# s = tf.Session()
#
# s.run()
# s.run()
# s.close()

# 只能运行一个图, 可以在会话当中指定图去运行
# 只要有会话的上下文环境,就可以使用方便eval()

# 训练模型
# 实时的提供数据去进行训练

# placeholder是一个占位符,feed_dict一个字典
plt = tf.placeholder(tf.float32, [2, 3, 4])

print(plt)

with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
    # print(sess.run(plt, feed_dict={plt: [[1, 2, 3], [4, 5, 36], [2, 3, 4]]}))
    # print(sum1.eval())
    print(a.graph)
    print("---------")
    print(a.shape)
    print(plt.shape)
    print("-------")
    print(a.name)
    print("-------")
    print(a.op)
View Code
原文地址:https://www.cnblogs.com/20183544-wangzhengshuai/p/14320101.html