tf.sqeeze:
给定张量输入,此操作返回相同类型的张量,并删除所有尺寸为1的尺寸。 如果不想删除所有尺寸1尺寸,可以通过指定squeeze_dims来删除特定尺寸1尺寸。如果不想删除所有大小是1的维度,可以通过squeeze_dims指定。
# 't' is a tensor of shape [1, 2, 1, 3, 1, 1]shape(squeeze(t)) ==> [2, 3]Or, to remove specific size 1 dimensions# 't' is a tensor of shape [1, 2, 1, 3, 1, 1]shape(squeeze(t, [2, 4])) ==> [1, 2, 3, 1]
tf.gather_nd(params, indices, name=None) {#gather_nd} 用indices从张量params得到新张量
cast(x, dtype, name=None) 将x的数据格式转化成dtype
tuple中要求不能被改变,且(),list是[]
tf.round函数用于将TensorFlow张量的值四舍五入为最接近的整数
tf.stop_gradient() :阻挡节点BP
的梯度
tf.image.crop_and_resize(image, boxes, box_ind, crop_size, method=None, extrapolation_value=None, name=None) The result is a 4-D tensor [num_boxes, crop_height, crop_width, depth
return super(self.__class__, self).call(inputs, training=False)
从运行结果上看,普通继承和super继承是一样的。但是其实它们的内部运行机制不一样,这一点在多重继承时体现得很明显。在super机制里可以保证公共父类仅被执行一次,至于执行的顺序,是按照mro进行的(E.__mro__)。
tf.gather类似embedding lookup ,从tensor中返回指定index对应的
isinstance函数可以对参数类型进行判断:
对参数类型做检查,只允许整数和浮点数类型的参数。数据类型检查可以用内置函数isinstance
实现:
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),第0个元组对应于所有参数的第0个元素,第1个元组对应于所有参数的第1个元素,依此类推,然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。
zip([1,2,3,4],[5,6,7,8])会返回[(1, 5), (2, 6), (3, 7), (4, 8)]
tf.round 向上取整
# TF doesn't have an equivalent to np.repeate() so simulate it
# using tf.tile() and tf.reshape.
b1 = tf.reshape(tf.tile(tf.expand_dims(boxes1, 1),
[1, 1, tf.shape(boxes2)[0]]), [-1, 4])
-expanddims
--tile张量扩张
control_dependencies(control_inputs)
返回一个控制依赖的上下文管理器,使用with
关键字可以让在这个上下文环境中的操作都在control_inputs
执行。
with g.control_dependencies([a, b, c]):
# `d` and `e` will only run after `a`, `b`, and `c` have executed.
d = ...
e = ...
x1, x2 = horizontal_indicies[[0, -1]]
y1, y2 = vertical_indicies[[0, -1]]
# x2 and y2 should not be part of the box. Increment by 1.