ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HybridSN代码修改

2022-01-28 12:04:26  阅读:160  来源: 互联网

标签:count HybridSN patchesData 代码 windowSize 修改 shape range margin


研究小组里初学习深度学习的同学我都布置写过 HybridSN 的代码:https://github.com/OUCTheoryGroup/colab_demo/blob/master/202003_models/HybridSN_GRSL2020.ipynb

最近做SRDP的同学反映,跑 Pavia 数据集的时候内存会爆,主要原因是 createImageCubes 这个函数有个地方:

patchesData = np.zeros([ width*height, windowSize, windowsSize, spectral_num])

因为 Pavia 数据集尺寸较大,width*height 就比较大了,内存会爆掉。

其实图像中大部分为是0,没有label,我们要取的,只是有label的部分。现在我改了改,先做个循环,看看有多少个像素有 label,然后记录在 count 里,分配内存时:

patchesData = np.zeros([count, windowSize, windowSize, spectral_num])

这样 count 比以前的 width*height 要小很多,内存就不会爆了

修改后的代码如下,供感兴趣的同学参考(Github上的我就不改了,留给以后新同学排雷):

# 在每个像素周围提取 patch 
def createImageCubes(X, y, windowSize=5, removeZeroLabels = True):
    # 给 X 做 padding
    margin = int((windowSize - 1) / 2)
    zeroPaddedX = padWithZeros(X, margin=margin)
    # 获得 y 中的标记样本数
    count = 0
    for r in range(0, y.shape[0]):
        for c in range(0, y.shape[1]):
            if y[r, c] != 0:
                count = count+1

    # split patches
    patchesData = np.zeros([count, windowSize, windowSize, X.shape[2]])
    patchesLabels = np.zeros(count)

    count = 0
    for r in range(margin, zeroPaddedX.shape[0] - margin):
        for c in range(margin, zeroPaddedX.shape[1] - margin):
            if y[r-margin, c-margin] != 0:
                patch = zeroPaddedX[r - margin:r + margin + 1, c - margin:c + margin + 1]   
                patchesData[count, :, :, :] = patch
                patchesLabels[count] = y[r-margin, c-margin]
                count = count + 1

    return patchesData, patchesLabels

标签:count,HybridSN,patchesData,代码,windowSize,修改,shape,range,margin
来源: https://www.cnblogs.com/gaopursuit/p/15852357.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有