yolo 算法学习笔记(二)(keras_yolo.py)

tf.space_to_depth(函数)

tf.space_to_depth(
input,
block_size,
name=None,
data_format=‘NHWC’)
重新排列空间数据块,进入深度.更具体地说,该操作会输出输入张量的副本,其中来自维height和width维的值将移至该depth维.attr block_size表示输入块大小.
不重叠的block_size乘block size大小的块,在每个位置重新排列成深度.
输出张量的深度是block_size * block_size * input_depth.
输入的每个块内的Y、X坐标成为输出通道索引的高阶分量.
输入张量的高度和宽度必须能被block_size整除.

a=np.random.randn(3,3,6,6)
b=tf.space_to_depth(a,block_size=3)
print(a.shape)
print(b)

#输出
(3, 3, 6, 6)
Tensor("SpaceToDepth_14:0", shape=(3, 1, 2, 54), dtype=float64)

当 输入张量的height,width为0时,输出亦为none

func()()

形如func()()这样形式的写法,其实是前一个函数的返回值是函数,因此第二个括号就是返回函数的参数,例如:

def a(a):
    print(a)
    def b(b):
        print(b)        
    return b
a(2)(3)
#输出
2
3

Lambda()

keras Lambda自定义层实现数据的切片,Lambda进行参数的传递

a =tf.random_normal((4,2,2,4))

def seg(a):
    return tf.space_to_depth(a,block_size=2)

x1 = Lambda(seg,output_shape=(4,1,1,16))(a)
print(x1)

#输出
Tensor("lambda_11/SpaceToDepth:0", shape=(4, 1, 1, 16), dtype=float32)

Keras( tensorflow backend )常用函数常用函数

K.tile函数定义:

K.tile(
    input,
    multiples,
    name=None
)

input是待扩展的张量,multiples是扩展方法。 假如input是一个3维的张量。那么mutiples就必须是一个1x3的1维张量。这个张量的三个值依次表示input的第1,第2,第3维数据扩展几倍。

a =K.random_normal((4,2,2))
b=K.tile(a,[1,1,3])
print(a)
print(b)

#输出
Tensor("random_normal_5:0", shape=(4, 2, 2), dtype=float32)
Tensor("Tile:0", shape=(4, 2, 6), dtype=float32)

K.expand_dims

expand_dims(x, dim=-1)

在下标为dim的轴上增加一维

x=np.array([[1,3],[2,4],[3,6]])
print("x shape:",x.shape)
y1=K.expand_dims(x, 0)
y2=K.expand_dims(x, 1)
y3=K.expand_dims(x, 2)
y4=K.expand_dims(x, -1)
 
print("y1 shape:",y1.shape)
print("y2 shape:",y2.shape)
print("y3 shape:",y3.shape)
print("y4 shape:",y4.shape)

#输出
x shape: (3, 2)
y1 shape: (1, 3, 2)
y2 shape: (3, 1, 2)
y3 shape: (3, 2, 1)
y4 shape: (3, 2, 1)

K.cast

tf.cast( ) 或者K.cast( ) 是执行 tensorflow 中的张量数据类型转换

K.gather()

gather(reference,indices)

在给定的张量中搜索给定下标的向量。

参数:reference表示被搜寻的向量;

indices表示整数张量,要查询的元素的下标。

返回值:一个与参数reference数据类型一致的张量。

from keras import backend as K
a=np.array([[1,2],[9,8],[7,4],[10,16]])
b=[1,2,3,1]
with tf.Session() as sess:
    print(sess.run(K.gather(a,b)))
#输出
[[ 9  8]
 [ 7  4]
 [10 16]
 [ 9  8]]

with open(path) as f:

文件打开函数,可以省略关闭的代码,with函数自动调用close()函数

最后推荐大家一个靠谱的论文检测平台。重复的部分有详细出处以及具体修改意见,能直接在文章上做修改,全部改完一键下载就搞定了。他们现在正在做毕业季活动, 赠送很多免费字数,可以说是十分划算了!地址是:https://www.paperpass.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值