看到这个问题的读者请点赞,真的思考了很久时间
1. 前提
一直想应用做迁移学习实验,但VGG16等经典模型的输入通道皆为三通道RGB格式,此处我记得要求是(224,224,3)。而我之前做实验所用数据为一维时序信号,有时转换为灰度图形式输入到卷积神经网络中,二者都是不可以的。
2. 过程
在知网上找了该篇文章
文章在数据预处理的地方介绍了一种思想
转换的具体流程为
根据该作者的思想,我实现了上述方法,代码如下:
3. 实现过程
import copy
import numpy as np
a = list(range(24))
a = np.array(a)
a = a.reshape(2,3,4)
bs = list()
for i in range(2):
c = []
# b = a[0,:,:] #取第一个数组
b_auto = a[i,:,:]
b_1 = copy.deepcopy(b_auto)
b_2 = copy.deepcopy(b_auto)
com = np.array([b_auto,b_1,b_2])
com = np.transpose(com,(1,2,0)) #通道变换(chw→hwc)
bs.append(com[np.newaxis, :])
c = np.concatenate(bs, axis=0)
print(c)
--------------------------------------
[[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]]
[[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]]
4. 规整如下
def cchannel(xxx): #定义变换通道函数
bs = list()
for i in range(len(xxx)):#获取例子个数
c = [添加链接描述](https://www.zhihu.com/question/373145401)[]
b_auto = xxx[i,:,:]#依次取灰度图
com = np.array([b_auto,b_auto,b_auto])#变为三通道
bs.append(com[np.newaxis, :])
nx_xxx = np.concatenate(bs, axis=0)
return nx_xxx
-------------------------------------