tensorflow点滴笔记
1、模型保存
模型保存需要使用函数 tf.train.Saver(),
a)创建saver时,可以指定需要存储的tensor,如果没有指定,则全部保存。
b) 创建saver时,可以指定保存的模型个数,利用max_to_keep=4,则最终会保存4个模型。
c) saver.save()函数里面可以设定global_step,说明是哪一步保存的模型。
d) 程序结束后,会生成四个文件:存储网络结构.meta、存储训练好的参数.data和.index、记录最新的模型checkpoint。
示例: saver.save(sess, "model_ame, global_step=epoch)
https://blog.csdn.net/liuxiao214/article/details/79048136
2、"Can not convert a ndarray into a Tensor or Operation"报错
https://blog.csdn.net/michael__corleone/article/details/79007425
test_fc1, test_fc2, Ys = sess.run([test_fc1, test_fc2, fc3],
feed_dict = {x1:xs1, x2:xs2, test_x1:test_img_raw, test_x2:test_img_raw1})
错误指示是run这里出了错,原因:接收的参数名和run()里面的参数名一样了,一般 第一次不会报错,下一次运行中,test_fc1,test_fc2变量名已有了,直接跑会和你前面定义的test_fc1,test_fc2相关运算冲突。 所以将接收的变量名改了就可以了。
3、tensorflow的axis理解
https://blog.csdn.net/m0_37041325/article/details/77155517
tensorFlow里的axis概念和numpy里是一样的,指tensor的某一维。举例:
import tensorflow as tf x=tf.constant([[.,.],[.,.]])
xShape=tf.shape(x)
z1=tf.reduce_mean(x,axis=)#沿axis=0操作
z2=tf.reduce_mean(x,axis=)#沿axis=1操作 with tf.Session() as sess:
xShapeValue,d1,d2=sess.run([xShape,z1,z2])
print('shape= %s'%(xShapeValue))
print(d1)
print(d2) #输出:
shape= [ ]
[. .]
[1.5 3.5]
程序里定义了一个常量tensor,这个tensor的shape是[2,2]即2行2列(x00=1,x01=2,x10=5,x11=2),在程序中,当指定x在axis=0进行求平均操作时,就是指定x00,x10进行求平均,x01,x11进行求平均的操作,当指定x在axis=1进行求平均操作时,就是指定x00,x10进行求平均,x01,x11进行求平均操作。
总结起来也就是说,当指定axis进行操作时,就使tensor就沿着这个axis变化,而其他的axis不变,按照这样的规则,遍历一次tensor,把得到的元素进行相应的操作。在上面的程序中,指定axis=0,操作,则axis=1这个轴上的数就不变。
下面以几个函数的使用来更进一步说明,
//1. tf.reduce_sum(input_tensor, axis) 沿着维度sxis计算和 x= [[, , ], [, , ]] //求和,在所有维度操作,也就相当于对所有元素求和
tf.reduce_sum(x) ==> //在维度0上操作,在这个例子中实际就是按列(维度1)求和
tf.reduce_sum(x, ) ==> [, , ] //在维度1上操作,在这个例子中实际就是按行(维度0)求和
tf.reduce_sum(x, ) ==> [, ] //2. tf.concat(values, axis):Concatenates tensors along one dimension
t1 = [[, , ], [, , ]] //2*3维
t2 = [[, , ], [, , ]] //2*3维
tf.concat([t1, t2], ) == > [[, , ], [, , ], [, , ], [, , ]]
//在维度0上连接,那么第一个维度会增加,在这里就是行会增多,结果是4*3维矩阵. x=tf.ones((,,)) //shape (3,2,2)
C=[x,x,x]
print(tf.concat(C,).shape) == > (,,)
// 再看这个例子,三维矩阵的连接,在第3个维度上,也就是维度2, 结果第三个维度会增加,也就是(3,2,6)
4、 scope 命名方法
tf.name_scope()与tf.variable_scope()
代码示例(以卷积层为例): https://blog.csdn.net/Jerr__y/article/details/70809528
概念: https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/5-12-scope/
tf.name_scope() 主要是用来管理命名空间的,这样子让我们的整个模型更加有条理。而 tf.variable_scope() 的作用是为了实现变量共享,它和 tf.get_variable() 来完成变量共享的功能。
tensorflow点滴笔记的更多相关文章
- Tensorflow学习笔记2:About Session, Graph, Operation and Tensor
简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节 ...
- Tensorflow学习笔记2019.01.22
tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...
- Tensorflow学习笔记2019.01.03
tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...
- TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]
I optimizer.minimize(loss, var_list) 我们都知道,TensorFlow为我们提供了丰富的优化函数,例如GradientDescentOptimizer.这个方法会自 ...
- 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识
深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...
- 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别
深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...
- TensorFlow基础笔记(0) 参考资源学习文档
1 官方文档 https://www.tensorflow.org/api_docs/ 2 极客学院中文文档 http://www.tensorfly.cn/tfdoc/api_docs/python ...
- TensorFlow基础笔记(3) cifar10 分类学习
TensorFlow基础笔记(3) cifar10 分类学习 CIFAR-10 is a common benchmark in machine learning for image recognit ...
- tensorflow学习笔记(4)-学习率
tensorflow学习笔记(4)-学习率 首先学习率如下图 所以在实际运用中我们会使用指数衰减的学习率 在tf中有这样一个函数 tf.train.exponential_decay(learning ...
随机推荐
- 从零开始的ESP8266探索(1)-使用Server功能搭建Web Server
https://blog.csdn.net/Naisu_kun/article/details/80398667 文件系统 https://blog.csdn.net/solar_Lan/articl ...
- .Net使用RabbitMQ详解 转载http://www.cnblogs.com/knowledgesea/p/5296008.html
.Net使用RabbitMQ详解 序言 这里原来有一句话,触犯啦天条,被阉割!!!! 首先不去讨论我的日志组件怎么样.因为有些日志需要走网络,有的又不需要走网路,也是有性能与业务场景的多般变化在其 ...
- Android APP性能测试笔记(一)
Android APP性能测试笔记(一) (1)工具使用 Android Studio GT, root的真机 (2)记录apk大小(对比竞品) 使用Android Studio导入需要测试 ...
- Linux Driver 开发 eclipse工程找不到头文件
如下添加头文件路径, 右键单击工程,选择 Properties > C/C++ Build > Settings > > GCC C/C++ Compiler ...
- 解决 Vim 的 quickfix 插件错误信息乱码问题
将以下代码插入 vim 配置文件即可, function! QfMakeConv() let qflist = getqflist() for i in q ...
- Python脱产8期 Day06 2019/4/18
一 深浅拷贝 例:ls = [1, 'abc', [10]] 1.值拷贝:s1 = ls # ls1直接将ls中存放的地址拿过来,>ls内部的值发生任何变化,ls1都会随之变化. 2.浅拷 ...
- 计算机网络#关于HDLC#
HDLC(High-Level Data Link Control,高级数据链路控制):面向比特型的协议 主站(发送命令).从站(响应命令).复合站(既可发送命令,也可响应命令) HDLC链路配置方式 ...
- 关于 js tofixed()保留小数位数问题
保留位数必须是数字 const num = parseFloat ('123456.33').tofixed(2); !!!! 注意 现在的的 num 是 字符串类型, 如果给它加数字的话,就会报错 ...
- Android so注入(inject)和Hook技术学习(一)
以前对Android so的注入只是通过现有的框架,并没有去研究so注入原理,趁现在有时间正好拿出来研究一下. 首先来看注入流程.Android so的注入流程如下: attach到远程进程 -> ...
- 【出错记录】Tomcat非root用户启动无法拥有权限读写文件
简单记录下,如有必要,将深入补充: 一.非root用户运行Tomcat及原因 由于项目中,为了安全需要,Tomcat将禁止以root形式启动,原因很简单,举个例子,一旦有人恶意将jsp文件透过某个别的 ...