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点滴笔记的更多相关文章

  1. Tensorflow学习笔记2:About Session, Graph, Operation and Tensor

    简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节 ...

  2. Tensorflow学习笔记2019.01.22

    tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...

  3. Tensorflow学习笔记2019.01.03

    tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...

  4. TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]

    I optimizer.minimize(loss, var_list) 我们都知道,TensorFlow为我们提供了丰富的优化函数,例如GradientDescentOptimizer.这个方法会自 ...

  5. 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识

    深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...

  6. 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别

    深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...

  7. TensorFlow基础笔记(0) 参考资源学习文档

    1 官方文档 https://www.tensorflow.org/api_docs/ 2 极客学院中文文档 http://www.tensorfly.cn/tfdoc/api_docs/python ...

  8. TensorFlow基础笔记(3) cifar10 分类学习

    TensorFlow基础笔记(3) cifar10 分类学习 CIFAR-10 is a common benchmark in machine learning for image recognit ...

  9. tensorflow学习笔记(4)-学习率

    tensorflow学习笔记(4)-学习率 首先学习率如下图 所以在实际运用中我们会使用指数衰减的学习率 在tf中有这样一个函数 tf.train.exponential_decay(learning ...

随机推荐

  1. 2017-2018-2 20155314《网络对抗技术》Exp7 网络欺诈防范

    2017-2018-2 20155314<网络对抗技术>Exp7 网络欺诈防范 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 利用setoolkit建立冒名网站 ...

  2. Flask-信号(blinker)

    简单了解信号 Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为.简单来说就是flask在列表里面,预留了几个空列表,在里面存东西.信号通过发送通知 ...

  3. Emacs 自动补全插件 ycmd

    Emacs 自动补全,最好的插件当属 ycmd.以下记录我的安装过程. 1. 安装 ycmd server github 官方地址: https://github.com/Valloric/ycmd ...

  4. Docker安装MySQL并配置远程访问

    1.docker search mysql 查看mysql版本 2.docker pull mysql 要选择starts最高的那个name 进行下载 3.docker images 查看下载好的镜像 ...

  5. 在使用 Spring Boot 和 MyBatis 动态切换数据源时遇到的问题以及解决方法

    相关项目地址:https://github.com/helloworlde/SpringBoot-DynamicDataSource 1. org.apache.ibatis.binding.Bind ...

  6. Google Protocol Buffers学习

    参考资料:http://www.cnblogs.com/royenhome/archive/2010/10/29/1864860.html 参考资料:http://www.jianshu.com/p/ ...

  7. object detection[YOLO]

    这部分,我们来聊聊YOLO. YOLO:You Only Look Once,顾名思义,就是希望网络在训练过程中,一张图片只要看一次就行,不需要去多次观察,比如滑框啥的,从而从底层原理上就减少了很多的 ...

  8. Spark性能调优

    Spark性能优化指南——基础篇 https://tech.meituan.com/spark-tuning-basic.html Spark性能优化指南——高级篇 https://tech.meit ...

  9. python中换行,'\r','\n'及'、'\r\n'

    '\r'的本意是回到行首,'\n'的本意是换行. 所以回车相当于做的是'\r\n'或者'\n\r'.'\r'就是换行并回行首, '\n'就是换行并回行首,用'\r\n'表示换行并回行首. window ...

  10. #Leetcode# 524. Longest Word in Dictionary through Deleting

    https://leetcode.com/problems/longest-word-in-dictionary-through-deleting/ Given a string and a stri ...