Tensorflow基本概念
tensorflow两个版本差异 CPU:综合能力强,处理各种事务 GPU:专注计算,计算单元多 所以如果显卡支持的话,GPU版本会运行的更快
运行有CPU加速建议的warning 如果是通过pip自动安装的tensorflow,运行时会有建议开启cpu加速的提示,关闭的方法:
import os os.environ[‘TR_CPP_MIN_LOG_LEVEL’]=‘2’ 3. tensorflow基本结构 tensor:张量,就是tensorflow的基本数据类型,实质内部时numpy中 ndarray的再封装 operation(op):专门运算的操作结点,所有操作都叫op graph:图,表示整个程序结构,各图之间互不干扰 session:会话,所有操作都需要通过会话运行 variavle:变量,tensorflow中的一个op,默认可以训练 4. 图 默认图:获取:g=tf.get_default_graph() 创建新图:
g=tf.Graph() with g.as_default(): pass #此内操作不再对其他图产生影响 5. 会话 一次只能运行一个图 with tf.Session(graph=g) as sess: pass #对g图进行操作,如果Session()中参数不填写,则对默认图进行操作 打印某张量的值 p=sess.run(sum) #或则 p=sum.eval() print§ 6. 会话的run()方法 run(fetches, feed_dict=None, graph=None) 参数介绍:
张量/op的元组、列表或字典 用来覆盖指定张量的值,给placeholder使用 plt=tf.placeholder(tf.float32, [2,3]) … # 开启会话 sess.run(plt,feed_dict={plt:[[1,2,3],[4,5,6]]}) 返回值异常的原因:
RuntimeError:Session可能处于无效状态,例如已关闭 TypeError:不适合的类型 ValueError:值无效或则tensor不存在 7. 张量 依赖于numpy的ndarray,一个类型化的N阶数组(tf.Tensor) 三部分组成:名字、形状、类型
形状:0维:()、1维:(1)、2维:(2, 2)、3维(3, 3, 3) 如果某一维数量不确定可用?代替
修改形状:
静态形状: plt = tf.placeholder(tf.float32, [None, 3]) plt.set_shape([3,3])
动态形状 plt_reshape = tf.reshape(plt, [3,4])
tf.zeros(shape, dtype=tf.float32, name=None):全0 tf.ones(shape, dtype=tf.float32, name=None):全1 tf.constant(value, dtype=tf.float32, shpe=None, name=None):常量 随机类型:
tf.random_normal(shape,mean=0,stddev=1.0,dtype=float32,seed=None,name=None) 满足正态分布的随机值 tf.truncated_normal(shape,mean=0,stddev=1.0,dtype=float32,seed=None,name=None) 满足不超过两个标准差的的随机值 9. 类型转换 a=tf.cast(x, dtype, name=None) 将x转换为dtype赋给a
切片与扩展 c=tf.concat([a,b],axis=1) 将a,b按axis=1方向合并
张量的所有API https://tensorflow.google.cn/api_docs/python/
变量创建 a=tf.Variable(initial_value=None,name=None,trainable=True)
a.assign(value) 为变量赋初值 a.eval(session=Node) 计算并返回值 a.name 返回变量名 注意:
变量能够持久化保存,普通张量不行 运行前鼻部初始化 13. 可视化Tensorboard 在Session中生成events文件 tf.summary.FileWriter(‘路径不包括文件名’,graph=?) 命令行启动 tensorboard --logdir=‘路径不包括文件名’ 按照命令行提示打开url