首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反射填充作为纯角的验证

反射填充作为纯角的验证
EN

Data Science用户
提问于 2019-03-16 17:11:32
回答 1查看 527关注 0票数 2

我在plaidML后端使用keras,需要实现反射填充。

使用tensorflow后端,这是一个简单的tf.padmode设置为反射。

如何用K函数或plaidml平铺函数实现该功能?

或者有什么实现可以供我使用?

使用K函数,简单地将值切片、倒置和连接在一起可能是可能的,但我在那个方向上的所有尝试都是一团糟的,而且并没有真正解决。

EN

回答 1

Data Science用户

回答已采纳

发布于 2019-03-25 04:25:27

这里有一个反射填充的版本,作为纯K函数,它应该(但不是经过测试)与每个后端一起工作:

代码语言:javascript
复制
def reflection_padding(inp, paddings):
    paddings = [(x, x) if isinstance(x, int) else x for x in paddings]
    ishape = inp.shape.dims
    ndims = inp.shape.ndims
    if len(ishape) != len(paddings):
        raise ValueError("Padding dims != input dims")
    last = inp
    _all_slice = slice(None, None, None)

    def _get_slices(ndims, axis, slice_):
        ret = [_all_slice for _ in range(ndims)]
        ret[axis] = slice_
        return tuple(ret)

    for axis, pads in ((i, x) for i, x in enumerate(paddings) if x[0]+x[1] != 0):
        pad_data = []
        if pads[0]:
            pre = last[_get_slices(ndims, axis, slice(pads[0], 0, -1))]
            pad_data.append(pre)
        pad_data.append(last)
        if pads[1]:
            post = last[_get_slices(ndims, axis, slice(-2, -pads[1]-2, -1))]
            pad_data.append(post)
        last = K.concatenate(pad_data, axis)
        ishape = last.shape.dims
    return last

# USAGE: reflection_padding(image_batch, [0, [2,2], [2,2], 0])

我将接受我自己的答案。如果有人有更好的答案,我很乐意把这个转到他们的身上

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/47427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档