Tensorflow函数随笔

tf.cond()

tf.cond(
    pred,
    true_fn=None,
    false_fn=None,
    name=None
)

true_fn和false_fn都返回输出张量的列表。true_fn和false_fn必须具有相同的非零数和输出类型。

参数:

  • pred:一个标量,它决定是返回true_fn的结果还是false_fn的结果。
  • true_fn:如果pred为真,则执行可调用的。
  • false_fn:如果pred为false,则可执行的调用。
  • name:返回的张量的可选名称前缀。

返回值:

  • 调用true_fn或false_fn返回的张量。如果callables返回一个单例列表,则从列表中提取元素。

tf.py_func()

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

参数:

  • func:  一个Python函数,它接受ndarray对象作为参数并返回一个ndarray对象列表(或单个ndarray)。这个函数必须接受inp中有多少张量就有多少个参数,这些参数类型将匹配相应的tf.inp中的tf.tensor。返回的ndarrays必须匹配已定义的Tout的数字和类型。重要提示:  func的输入和输出numpy ndarrays不能保证是副本。在某些情况下,它们的底层内存将与相应的TensorFlow张量共享。在没有显式(np.)复制的python数据结构中,就地修改或存储func输入或返回值可能会产生不确定的结果。
  • inp:  一个张量对象的列表。
  • Tout:  tensorflow数据类型的列表或元组,如果只有一个tensorflow数据类型,则使用单个tensorflow数据类型,指示func返回什么。
  • stateful:  (布尔)。如果为真,则应该认为该函数是有状态的。如果一个函数是无状态的,当给定相同的输入时,它将返回相同的输出,并且没有可观察到的副作用。诸如公共子表达式消除之类的优化只在无状态操作上执行。
  • name:  操作的名称(可选)。

返回值:

  • func计算的张量或单个张量的列表
import numpy as np
import tensorflow as tf
 
 
def my_func(array1,array2):
    return array1 + array2, array1 - array2
 
if __name__ =='__main__':
    array1 = np.array([[1, 2], [3, 4]])
    array2 = np.array([[1, 2], [3, 4]])
 
    a1 = tf.placeholder(tf.float32,[2,2],name = 'array1')
    a2 = tf.placeholder(tf.float32,[2,2],name = 'array2')
    # 函数、输入、输出类型
    y1,y2 = tf.py_func(my_func,[a1,a2],[tf.float32, tf.float32])
 
    with tf.Session() as sess:
        y1_,y2_ = sess.run([y1,y2],feed_dict={a1:array1,a2:array2})
        print(y1_)
        print('*'*10)
        print(y2_)
 
 
Output:
-----------
[[2. 4.]
[6. 8.]]
**********
[[0. 0.]
[0. 0.]]
-----------

 tf.no_regularizer

使用这个函数用来防止变量的正则化。

 tf.gather

tf.gather(params,indices,axis=0 )

从params的axis维根据indices的参数值获取切片

 

posted @ 2020-12-19 22:23  番茄--  阅读(103)  评论(0)    收藏  举报