TensorFlow中的feed与fetch

TensorFlow中的feed与fetch

一:占位符(placeholder)与feed

当我们构建一个模型的时候,有时候我们需要在运行时候输入一些初始数据,这个时候定义模型数据输入在tensorflow中就是用placeholder(占位符)来完成。它的定义如下:

def placeholder(dtype, shape=None, name=None):

其中dtype表示数据类型,shape表示维度,name表示名称。它支持单个数值与任意维度的数组输入。

1. 单个数值占位符定义

a = tf.placeholder(tf.float32)b = tf.placeholder(tf.float32)c = tf.add(a, b)

当我们需要执行得到c的运行结果时候我们就需要在会话运行时候,通过feed来插入a与b对应的值,代码演示如下:

with tf.Session() as sess: result = sess.run(c, feed_dict={a:3, b:4}) print(result)

其中feed_dict就是完成了feed数据功能,feed中文有喂饭的意思,这里还是很形象的,对定义的模型来说,数据就是最好的食物,所以就通过feeddict来实现。

2. 多维数据

同样对于模型需要多维数据的情况下通过feed一样可以完成,定义二维数据的占位符,然后相加,代码如下:

_x = tf.placeholder(shape=[None, 2], dtype=tf.float32, name="x")_y = tf.placeholder(shape=[None, 2], dtype=tf.float32, name="y")z = tf.add(_x, _y);

运行时候需要feed二维数组,实现如下:

with tf.Session() as sess: result = sess.run(z, feed_dict={_x:[[3, 4], [1, 2]], _y:[[8, 8],[9, 9]]}) print(result)

二:fetch用法

会话运行完成之后,如果我们想查看会话运行的结果,就需要使用fetch来实现,feed,fetch同样可以fetch单个或者多个值。

1. fetch单个值

矩阵a与b相乘之后输出结果,通过会话运行接受到值c_res这个就是fetch单个值,fetch这个单词在数据库编程中比较常见,这里称为fetch也比较形象。代码演示如下:

import tensorflow as tfa = tf.Variable(tf.random_normal([3, 3], stddev=3.0), dtype=tf.float32)b = tf.Variable(tf.random_normal([3, 3], stddev=3.0), dtype=tf.float32)c = tf.matmul(a, b);init = tf.global_variables_initializer()with tf.Session() as sess: sess.run(init) c_res = sess.run(c) print(c_res)

2. fetch多个值

还是以feed中代码为例,我们把feed与fetch整合在一起,实现feed与fetch多个值,代码演示如下:

import tensorflow as tf_x = tf.placeholder(shape=[None, 2], dtype=tf.float32, name="x")_y = tf.placeholder(shape=[None, 2], dtype=tf.float32, name="y")z = tf.add(_x, _y);data = tf.random_normal([2, 2], stddev=5.0)Y = tf.add(data, z)with tf.Session() as sess: z_res, Y_res = sess.run((z, Y), feed_dict={_x:[[3, 4], [1, 2]], _y:[[8, 8],[9, 9]]}) print(z_res) print(Y_res)

上述代码我们就fetch了两个值,这个就是feed与fetch的基本用法。下面我们就集合图像来通过feed与fetch实现一些图像ROI截取操作。代码演示如下:

import tensorflow as tfimport cv2 as cv# 通过opencv读取图像并显示src = cv.imread("D:/javaopencv/test.png")cv.imshow("input", src)_image = tf.placeholder(shape=[None, None, 3], dtype=tf.uint8, name="image")
# ROI区域截取
roi_image = tf.slice(_image, [40, 130, 0], [180, 180, -1])#定义会话并执行with tf.Session() as sess: slice = sess.run(roi_image, feed_dict={_image:src}) print(slice.shape) cv.imshow("roi", slice) cv.waitKey(0) cv.destroyAllWindows()

运行结果显示: 原图:

脸部ROI截取

原文发布于微信公众号 - OpenCV学堂(CVSCHOOL)

原文发表时间:2018-03-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Leetcode名企之路

【Leetcode】62. 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。

13110
来自专栏Python爬虫与数据挖掘

浅谈网络爬虫中深度优先算法和简单代码实现

学过网站设计的小伙伴们都知道网站通常都是分层进行设计的,最上层的是顶级域名,之后是子域名,子域名下又有子域名等等,同时,每个子域名可能还会拥有多个同级域名,而且...

17140
来自专栏吉浦迅科技

DAY15:阅读CUDA C runtime之纹理内存

15830
来自专栏杨熹的专栏

几种简单的文本数据预处理方法

本文将介绍几种简单的文本数据预处理方法,希望与大家共同学习分享。

34140
来自专栏wym

opencv imwrite函数参数详解+例子

cv2.imwrite(1."图片名字.格式",2.Mat类型的图像数据,3.特定格式保存的参数编码,默认值std::vector<int>()  所以一般可以...

1.2K20
来自专栏深度学习之tensorflow实战篇

R常用基本 函数汇总整理

help() 或者 ? + command 这是学习和使用R最常用到的命令。 help.search() 或者?? 搜索包含制定字串或pattern的...

38230
来自专栏转载gongluck的CSDN博客

[C++]:A*——A Star算法简介

A*算法 求最优解 算法一直维护两个表: Open和Close 将起点S加入Open中 将所有S可到达的点(障碍物以及位于Close表中的点均看成不可达...

48160
来自专栏AzMark

Matplotlib 系列之「Legend 图例」

Matplotlib 的 Legend 图例就是为了帮助我们展示每个数据对应的图像名称,更好的让读者认识到你的数据结构。

10010
来自专栏ChaMd5安全团队

小姐姐教你做CTF逆向题:利用符号执行技术和约束求解器

0x00 前言 在CTF比赛中,逆向类题目常常以考察选手的逆向分析能力、算法分析能力角度出发,通过还原程序中的算法逻辑,从而获取flag。但是如果可以在程序执行...

1.1K120
来自专栏Soul Joy Hub

TensorFlow指南(二)——练习思考:上手TensorFlow

http://blog.csdn.net/u011239443/article/details/79075392 创建一个计算图而不是直接执行计算的主要好处是...

32340

扫码关注云+社区

领取腾讯云代金券