小编yuj*_*ao 的帖子

torch.autograd.Variable 的目的是什么?

我从我的训练数据集中加载featureslabels。它们最初都是 numpy 数组,但我使用torch.from _numpy(features.copy())和将它们更改为火炬张量torch.tensor(labels.astype(np.bool))

而且我注意到,torch.autograd.Variable是一样的东西placeholdertensorflow

当我训练我的网络时,我首先尝试

features = features.cuda()
labels = labels.cuda()

outputs = Config.MODEL(features)
loss = Config.LOSS(outputs, labels)
Run Code Online (Sandbox Code Playgroud)

然后我试过了

features = features.cuda()
labels = labels.cuda()

input_var = Variable(features)
target_var = Variable(labels)
outputs = Config.MODEL(input_var)
loss = Config.LOSS(outputs, target_var)
Run Code Online (Sandbox Code Playgroud)

两个块都成功激活训练,但我担心可能会有细微差别。

python deep-learning pytorch

10
推荐指数
1
解决办法
1万
查看次数

pytorch 是否在 nn.Linear 中自动应用 softmax

pytorch分类网络模型中定义为这样,

class Net(torch.nn.Module):
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()
        self.hidden = torch.nn.Linear(n_feature, n_hidden)   # hidden layer
        self.out = torch.nn.Linear(n_hidden, n_output)   # output layer

    def forward(self, x):
        x = F.relu(self.hidden(x))      # activation function for hidden layer
        x = self.out(x)
        return x
Run Code Online (Sandbox Code Playgroud)

这里应用了 softmax 吗?在我看来,事情应该是这样的,

class Net(torch.nn.Module):
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()
        self.hidden = torch.nn.Linear(n_feature, n_hidden)   # hidden layer
        self.relu =  torch.nn.ReLu(inplace=True)
        self.out = torch.nn.Linear(n_hidden, n_output)   # output layer
        self.softmax = torch.nn.Softmax(dim=n_output)
    def forward(self, x):
        x = …
Run Code Online (Sandbox Code Playgroud)

python deep-learning activation-function pytorch

9
推荐指数
1
解决办法
7079
查看次数

除了 scipy.ndimage.zoom 之外,还有更快的方法来调整 3d 体积大小/重新采样吗?

我知道有一个函数scipy.ndimage.zoom可以调整 3D 体积的大小\重新采样,但那是针对 numpy.array 的,而且它的速度非常慢。因此,我用ResampleImageFilterfromSimpleITK代替。我认为基于 C++ simpleitk 工作得更快。

但是使用 simpleitk 重新采样有一个小缺陷。ResampleImageFilter适用于SimpleITK.Image,但不适用于numpy.array,因此进行进一步操作非常不方便。还有其他方法可以对 3D 体积进行重新采样吗?

编辑
为什么我有这个担忧是因为我想利用 SimpleITK 重采样的快速速度,同时我想保持代码干净。例如,我需要对一个卷进行二进制阈值,然后对整个事物进行重新采样。所以这就是我的解决方案

binthresh = sitk.BinaryThresholdImageFilter()
... #setting up params for the binthresh
img = binarythresh.Execute(img)
resample = sitk.ResampleImageFilter()
... #setting up params for the resample
img = resample.Execute(img)
arr = sitk.GetArrayFromImage(img)
... # numpy operations on the arr
Run Code Online (Sandbox Code Playgroud)

但事实上,使用 numpy 进行二进制阈值的逻辑索引要简单得多,这将使我的代码更加紧凑。
总而言之,我想充分利用 SimpleITK 重采样,但有些操作可以通过 numpy 更好地完成,然后我的代码与 SimpleITK 和 numpy 都有点交织在一起。我认为这不是一件好事。

python resize numpy scipy simpleitk

7
推荐指数
0
解决办法
1629
查看次数

Adam在keras中是如何实现学习率衰减的

我在优化器 Adam 中设置了学习率衰减,例如

LR = 1e-3
LR_DECAY = 1e-2
OPTIMIZER = Adam(lr=LR, decay=LR_DECAY)
Run Code Online (Sandbox Code Playgroud)

正如 keras 文档Adam所说,在每个 epoch 之后,学习率将是

lr = lr * (1. / (1. + self.decay * K.cast(self.iterations, K.dtype(self.decay))))
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,学习率是这样的,

lr = lr * 1 / ( 1 + num_epoch * decay)
Run Code Online (Sandbox Code Playgroud)

但是在看到打印出来后,我没有看到学习率衰减生效。我用这个有什么问题吗?

编辑
我通过设置 的详细信息打印出学习ReduceLROnPlateau,例如,

ReduceLROnPlateau(monitor='val_loss', factor=0.75, patience=Config.REDUCE_LR_PATIENCE, verbose=1, mode='auto', epsilon=0.01, cooldown=0, min_lr=1e-6
Run Code Online (Sandbox Code Playgroud)

这将监控 val-loss 并通过乘以 来降低学习率factor。打印出来的学习率是这样的,

Epoch 00003: ReduceLROnPlateau reducing learning rate to 0.0007500000356230885.
Run Code Online (Sandbox Code Playgroud)

我将初始学习率设置为 1e-3。因此,看起来学习率从 1e-3 变为 1e-3 * 0.75,所以我怀疑 …

python deep-learning keras tensorflow

6
推荐指数
1
解决办法
8115
查看次数

什么时候在keras中使用sample_weights合适?

根据这个问题,我了解到,class_weightkeras训练期间应用加权损失,并且sample_weight如果我对所有训练样本没有相同的信心,则会按样本进行一些操作。

所以我的问题是,

  1. 验证期间的损失是由 加权class_weight,还是仅在训练期间加权?
  2. 我的数据集有 2 个类别,实际上我的类别分布并没有严重不平衡。该比例约为。1.7 : 1.是否有必要使用class_weight来平衡损失甚至使用过采样?可以将稍微不平衡的数据保留为通常的数据集处理吗?
  3. 我可以简单地考虑sample_weight为每个训练样本赋予的权重吗?而且我的训练样本可以得到同等的置信度,所以我可能不需要使用它。

python keras tensorflow

6
推荐指数
1
解决办法
8719
查看次数