一、简介

def py_func(func, inp, Tout, stateful=True, name=None)

  该函数重构一个python函数,并将其作为一个TensorFlow的op使用。
  给定一个输入和输出都是numpy数组的python函数’func’,py_func函数将func重构进TensorFlow的计算图中。

  例如:

def my_func(x):# x will be a numpy array with the contents of the placeholder belowreturn np.sinh(x)
inp = tf.placeholder(tf.float32)
y = tf.py_func(my_func, [inp], tf.float32)

  参数如下:

参数 作用
func A Python function, which accepts a list of NumPy ndarray objects having element types that match the corresponding tf.Tensor objects in inp, and returns a list of ndarray objects (or a single ndarray) having element types that match the corresponding values in Tout.

一个python函数,它将一个Numpy数组组成的list作为输入,该list中的元素的数据类型和inp参数中的tf.Tensor对象的数据类型相对应,同时该函数返回一个Numpy数组组成的list或者单一的Numpy数组,其数据类型和参数Tout中的值相对应。

inp A list of Tensor objects.

Tensor队形组成的list。

Tout A list or tuple of tensorflow data types or a single tensorflow data type if there is only one, indicating what func returns.

一个tensorflow数据类型组成的list或者tuple,(如果只有一个返回值,可以是单独一个tensorflow数据类型),表明该函数的返回对象的数据类型。

stateful (Boolean.) If True, the function should be considered stateful. If a function is stateless, when given the same input it will return the same output and have no observable side effects. Optimizations such as common subexpression elimination are only performed on stateless operations.

布尔值,如果该值为True,该函数应被视为与状态有关的。如果一个函数与状态无关,则相同的输入会产生相同的输出,并不会产生明显的副作用。有些优化操作如common subexpression elimination只能在与状态无关的操作中进行。

name 操作的名称

二、代码示例

import tensorflow as tf
import numpy as np# 定义一个函数,输入为两个array,返回他们的加,减,以及点乘和叉乘
def my_function(array1, array2):return array1 + array2, array1 - array2, array1 * array2, np.dot(array1, array2)if __name__ == '__main__':array1 = np.array([[1, 2], [3, 4]])array2 = np.array([[5, 6], [7, 8]])a1 = tf.placeholder(dtype=tf.float32, shape=[2, 2], name='array1')a2 = tf.placeholder(dtype=tf.float32, shape=[2, 2], name='array2')# 重构函数y1, y2, y3, y4 = tf.py_func(my_function, [a1, a2], [tf.float32, tf.float32, tf.float32, tf.float32])with tf.Session() as sess:tf.global_variables_initializer().run()_y1, _y2, _y3, _y4 = sess.run([y1, y2, y3, y4], feed_dict={a1: array1, a2: array2})print(_y1)print('*' * 8)print(_y2)print('*' * 8)print(_y3)print('*' * 8)print(_y4)

  结果如下:

[[ 6.  8.][10. 12.]]
********
[[-4. -4.][-4. -4.]]
********
[[ 5. 12.][21. 32.]]
********
[[19. 22.][43. 50.]]

Tensorflow深度学习之二十五:tf.py_func相关推荐

  1. 深度学习(二十五)——Attention(2)

    Attention(续) Multi-Head Attention 这个是Google提出的新概念,是Attention机制的完善.不过从形式上看,它其实就再简单不过了,就是把Q,K,V通过参数矩阵映 ...

  2. 系统学习深度学习(二十五)--CNN调优总结

    资料来自网上,略有删改. 1.针对CNN优化的总结:Systematic evaluation of CNN advances on the ImageNet 使用没有 batchnorm 的 ELU ...

  3. 深度学习(二十五)基于Mutil-Scale CNN的图片语义分割、法向量估计-ICCV 2015

    基于Mutil-Scale CNN的图片语义分割.法向量估计 原文地址:http://blog.csdn.net/hjimce/article/details/50443995 作者:hjimce 一 ...

  4. 深度学习(二十五)基于Mutil-Scale CNN的图片语义分割、法向量估计

    基于Mutil-Scale CNN的图片语义分割.法向量估计 原文地址:http://blog.csdn.net/hjimce/article/details/50443995 作者:hjimce 一 ...

  5. 花书+吴恩达深度学习(二十)构建模型策略(超参数调试、监督预训练、无监督预训练)

    目录 0. 前言 1. 学习率衰减 2. 调参策略 3. 贪心监督预训练 4. 贪心逐层无监督预训练 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十 ...

  6. JavaScript学习(二十五)—实现无缝滚动

    JavaScript学习(二十五)-实现无缝滚动 效果如下: 代码如下: <!DOCTYPE html> <html lang="en"><head& ...

  7. 动手学深度学习(二十二)——GoogLeNet:CNN经典模型(五)

    文章目录 1. 含并行连结的网络(GoogLeNet) 1.1 Inception块 1.2 GoogLeNet模型 2. 动手实现简化的GoogLeNet模型 2.1 实现Inception块 2. ...

  8. JVM 学习笔记二十五、JVM监控及诊断工具-命令行篇

    二十五.JVM监控及诊断工具-命令行篇 1.概述 性能诊断是软件工程师在日常工作中经常面对和解决的问题,在用户体验至上的今天,解决好应用软件的性能问题能带来非常大的收益. Java作为最流行的编程语言 ...

  9. 系统学习深度学习(二十二)--CNN经典模型总结

    转自:http://www.open-open.com/lib/view/open1473213789568.html 参考:http://blog.csdn.net/qq_17754181/arti ...

最新文章

  1. 从iso镜像升级ubuntu
  2. 新手java五子棋完整代码判断落子落在线上_Java初学者,编写小游戏五子棋的问题?...
  3. Bootstrap4+MySQL前后端综合实训-Day08-PM【ajax获取表单标签内容、根据“栏目信息”添加“新闻信息”、新闻管理系统-项目展示】
  4. puppy linux中文设置,Puppy Linux 中文支持包制作方法
  5. 导师推荐 | 第 4 期临床基因组家系分析,同时解决科研和临床问题
  6. 2019年12月数据库流行度排行:前三甲高位收官 数据库重获增长趋势
  7. python3实战练手项目_Python0基础练手项目有哪些值得推荐?附实战项目+学习图谱...
  8. 2018级C语言大作业 - 祖玛
  9. 什么是 COM编程技术?
  10. addEventListener和attachEvent
  11. linux壁纸图片不让复制,一些不常见到的LINUX壁纸,老规矩只提供给红联的兄弟姐妹...
  12. java定义一个getsize方法_java.util.zip.ZipEntry.getSize()方法示例
  13. Android studio 突然连接不上夜神模拟器
  14. 如何快速将jpg格式文件转换成bmp格式
  15. Rancher搭建Longhorn分布式存储
  16. android 根据宽度调整字体大小,android根据分辨率自动调整字体大小的实例代码
  17. 这是我见过最牛逼的滑动加载前端框架
  18. 利用jsoup解析网站网页
  19. Linux 操作系统(二)搜索文件命令find、locate、which、whereis、grep、wc
  20. 电感设计中的细节问题:磁芯损耗、线圈设计

热门文章

  1. 智力题------小白鼠试毒问题
  2. run和start区别
  3. mysql 创建用户 create user_MySQL数据库创建用户(CREATE USER)
  4. python leetcode 202. Happy Number
  5. 全球教育ERP系统软件行业调研及趋势分析报告
  6. 【BOI2007】逃跑问题 (BSOI2344)
  7. ubuntu xfce美化
  8. 2020秋季《大数据与物联网》期末答案参考
  9. 加速电脑启动,给电脑瘦身
  10. 18-Jenkisn-Pipelin-声明式流水线语法-triggers/stage/tool