小编Yon*_*ren的帖子

CNN - 图像大小调整VS填充(保持宽高比与否?)

虽然通常人们倾向于在训练CNN时简单地将任何图像调整为正方形(例如,resnet采用224x224方形图像),这对我来说看起来很难看,特别是当纵横比不是1时.

(事实上​​,这可能会改变基本事实,例如专家可能给出扭曲图像的标签可能与原始图像不同).

所以现在我将图像调整为224x160,保持原始比例,然后用0填充图像(将其粘贴到完全黑色的224x224图像中的随机位置).

我的方法对我来说似乎并不原创,但我找不到任何有关我的方法与"通常"方法的信息.时髦!

那么,哪种方法更好?为什么?(如果答案是数据相关的,请分享你的想法,如果一个优先于另一个.)

image machine-learning computer-vision neural-network conv-neural-network

23
推荐指数
2
解决办法
8163
查看次数

没有文件应该打开时PyTorch的dataloader"太多打开文件"错误

所以这是一个说明问题的最小代码:

这是数据集:

class IceShipDataset(Dataset):
    BAND1='band_1'
    BAND2='band_2'
    IMAGE='image'

    @staticmethod
    def get_band_img(sample,band):
        pic_size=75
        img=np.array(sample[band])
        img.resize(pic_size,pic_size)
        return img

    def __init__(self,data,transform=None):
        self.data=data
        self.transform=transform

    def __len__(self):
        return len(self.data)  

    def __getitem__(self, idx):

        sample=self.data[idx]
        band1_img=IceShipDataset.get_band_img(sample,self.BAND1)
        band2_img=IceShipDataset.get_band_img(sample,self.BAND2)
        img=np.stack([band1_img,band2_img],2)
        sample[self.IMAGE]=img
        if self.transform is not None:
                sample=self.transform(sample)
        return sample
Run Code Online (Sandbox Code Playgroud)

这是失败的代码:

PLAY_BATCH_SIZE=4
#load data. There are 1604 examples.
with open('train.json','r') as f:
        data=f.read()
data=json.loads(data)

ds=IceShipDataset(data)
playloader = torch.utils.data.DataLoader(ds, batch_size=PLAY_BATCH_SIZE,
                                          shuffle=False, num_workers=4)
for i,data in enumerate(playloader):
        print(i)
Run Code Online (Sandbox Code Playgroud)

它在for循环中给出了奇怪的打开文件错误...我的火炬版本是0.3.0.post4

如果你想要json文件,可以在Kaggle上找到它(https://www.kaggle.com/c/statoil-iceberg-classifier-challenge)

我应该提一下,这个错误与我的笔记本电脑的状态无关:

yoni@yoni-Lenovo-Z710:~$ lsof | wc -l
89114
yoni@yoni-Lenovo-Z710:~$ cat /proc/sys/fs/file-max
791958 …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pytorch

12
推荐指数
1
解决办法
1433
查看次数

AutoCloseable 和垃圾回收的关系

所以我已经阅读了有关自动关闭界面的所有内容并尝试使用资源,但这让我想知道:

如果我不(忘记)包装一个实现 AutoCloseable 的类,并在使用该类的代码中尝试使用资源,但该类确实从操作系统获取资源,会发生什么情况?虽然无法保证 JVM 何时决定调用其垃圾收集器,但当它调用时,它会调用 close() 方法吗?

如果没有,这是我会想念 C++ 的析构函数的地方吗?:) 是否有类似的方法来确保从该类的代码而不是用户的代码中,一旦对象应该被释放(例如超出范围),它将释放它所占用的所有操作系统资源?

java garbage-collection

5
推荐指数
1
解决办法
2783
查看次数

使用Angular 6动态创建可点击的div

我希望向用户显示一个图像,该图像具有不同数量的div(取决于检测到的脸部数量),该图像应该是可单击的(单击脸部将显示该特定脸部的某些属性)。

因此,理想情况下,我想在每个面孔周围创建一些div(或按钮),并为每个元素添加类似(click)=“ divClicked()”的元素。但是,(click)不是合法属性,因此,例如,尝试类似

d3.select('button').attr('(click)','onClickMe()');
Run Code Online (Sandbox Code Playgroud)

给出一个错误。onclick是一个合法属性,但是我认为通过使用它,我应该打破Angular希望我的工作方式(因为将函数放入组件的ts文件中会导致未定义onClickMe错误)。

我能想到的最好的解决方法是为每个div分配一个ID,然后执行类似的操作

document.getElementById('b1').onclick=this.onClickMe;
Run Code Online (Sandbox Code Playgroud)

但这感觉像是不好的编码。

那么,这样做的干净方法是什么?

javascript angular

2
推荐指数
1
解决办法
3073
查看次数