kears拆分 tensor 换位 reshape

这篇博客介绍了如何在Keras中利用Lambda层对神经网络输入数据进行split和transpose操作。通过Lambda层,可以将形状为(None,49,49,16,16,3)的数据拆分为49个形状为(None,16,16,3)的列表,然后通过转置恢复原有顺序。这在构建深度学习模型时对于数据预处理非常有用。
摘要由CSDN通过智能技术生成
# (None, 49, 49, 16, 16, 3) --->49个(None,49,16,16,3)  拆分成list
    x = Lambda(tf.split, arguments={'axis': 1, 'num_or_size_splits': 49})(x)

如果split()想要用到keras中,就必须套入Lambda,作为神经网络的一层出现。
lambda中文文档
在这里插入图片描述
例:? x 2 x 32 x 32 切成 ? x 2 x 4 x 8 x 32,再转置成4 x ? x 2 x 8 x32
1 用如下 split() 进行切割

x = Lambda(tf.split, arguments={'axis': 2, 'num_or_size_splits': 4})(input_tensor)
# x.shape = (4,?,2,8,32)

2 tf.transpose() 转置函数,第一个参数是tensor,第二个参数是axis的顺序

x = Lambda(tf.transpose, arguments={'perm': [1,2,0,3,4]})(x)
# x.shape = (?,2,4,8,32)

3 还原成最初的样子以及顺序

# 直接reshape
x = Reshape((2, 32, 32,))(x)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值