小编pro*_*sti的帖子

使 CUDA 内存不足

我正在尝试训练一个网络,但我得到了,我将批量大小设置为 300,并且收到此错误,但即使我将其减少到 100,我仍然收到此错误,更令人沮丧的是,在 ~1200 个图像上运行 10 epoch大约需要 40 分钟,请提出问题所在以及如何加快该过程!任何提示都会非常有帮助,提前致谢。

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-31-3b43ff4eea72> in <module>()
      5         labels = Variable(labels).cuda()
      6 
----> 7         optimizer.zero_grad()
      8         outputs = cnn(images)
      9         loss = criterion(outputs, labels)

/usr/local/lib/python3.5/dist-packages/torch/optim/optimizer.py in     zero_grad(self)
    114                 if p.grad is not None:
    115                     if p.grad.volatile:
--> 116                         p.grad.data.zero_()
    117                     else:
    118                         data = p.grad.data

RuntimeError: cuda runtime error (2) : out of memory at /pytorch  /torch/lib/THC/generic/THCTensorMath.cu:35`
Run Code Online (Sandbox Code Playgroud)

即使我的 GPU 是免费的

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.111                Driver Version: 384.111                       | …
Run Code Online (Sandbox Code Playgroud)

gpu nvidia deep-learning pytorch

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

best_state 在 pytorch 训练期间随模型变化

我想保存最好的模型,然后在测试期间加载它。所以我使用了以下方法:

def train():  
    #training steps …  
    if acc > best_acc:  
        best_state = model.state_dict()  
        best_acc = acc
    return best_state  
Run Code Online (Sandbox Code Playgroud)

然后,在我使用的主函数中:

model.load_state_dict(best_state)  
Run Code Online (Sandbox Code Playgroud)

恢复模型。

但是,我发现 best_state 总是与训练时的最后一个状态相同,而不是最佳状态。有谁知道原因以及如何避免它?

顺便说一下,我知道我可以使用torch.save(the_model.state_dict(), PATH)然后通过 the_model.load_state_dict(torch.load(PATH)). 但是,我不想将参数保存到文件中,因为训练和测试函数在一个文件中。

python ordereddictionary pytorch

4
推荐指数
1
解决办法
864
查看次数

如何修复RuntimeError“标量类型为Float的预期对象,但参数为标量类型Double”?

我正在尝试通过PyTorch训练分类器。但是,当我向模型提供训练数据时,我遇到了训练问题。我收到此错误y_pred = model(X_trainTensor)

RuntimeError:标量类型为Float的预期对象,但参数#4'mat1'的标量类型为Double

这是我的代码的关键部分:

# Hyper-parameters 
D_in = 47  # there are 47 parameters I investigate
H = 33
D_out = 2  # output should be either 1 or 0
Run Code Online (Sandbox Code Playgroud)
# Format and load the data
y = np.array( df['target'] )
X = np.array( df.drop(columns = ['target'], axis = 1) )
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.8)  # split training/test data

X_trainTensor = torch.from_numpy(X_train) # convert to tensors
y_trainTensor = torch.from_numpy(y_train)
X_testTensor = …
Run Code Online (Sandbox Code Playgroud)

python classification neural-network deep-learning pytorch

4
推荐指数
3
解决办法
5847
查看次数

PyTorch:学习率调度程序

如何将学习率调度程序与以下优化程序一起使用?

optimizer = torch.optim.Adam(optim_params,betas=(args.momentum, args.beta), weight_decay=args.weight_decay)
Run Code Online (Sandbox Code Playgroud)

我已经编写了以下调度程序:

scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=100, gamma=0.9)
Run Code Online (Sandbox Code Playgroud)

我不清楚是否应该执行调度程序或优化程序。我应该采取以下顺序执行以下操作?

optimizer.zero_grad()
scheduler.step()
optimizer.step()
Run Code Online (Sandbox Code Playgroud)

python machine-learning pytorch learning-rate

4
推荐指数
1
解决办法
63
查看次数

关于operator关键字的Python错误

import KNN
def c(i,d,l,k):
    dss=d.shape[0]
    dm=tile(i,(dss,1))-d
    sqm=dm**2
    sqd=sqm.sum(axis=1)
    dist=sqd**0.5
    sDI=dist.argsort()
    clc={}
    for i in range(k):
        vl=l[sDI[i]]
        clc[vl]=clc.get(vl,0)+1     
    sCC=sorted(clc.items(),key=operator.itemgetter(1),reverse=True)
    return sCC[0][0]

c([0,0],g,l,3)
Run Code Online (Sandbox Code Playgroud)

错误:

Traceback (most recent call last):
  File "<pyshell#32>", line 1, in <module>
    c([0,0],g,l,3)
  File "<pyshell#31>", line 12, in c
    sCC=sorted(clc.items(),key=operator.itemgetter(1),reverse=True)
NameError: global name 'operator' is not defined
Run Code Online (Sandbox Code Playgroud)

KNN包含以下代码:::

from numpy import *
import operator

def createDataSet():
    group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
    labels = ['A','A','B','B']
    return group, labels
Run Code Online (Sandbox Code Playgroud)

为什么上面提到的错误?程序在Python 3.3.2上运行.此代码是一个在Python中运行的简单k分类算法.

python error-handling python-3.x

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

预期ndim = 3,找到的ndim = 2

我是Keras的新手,我正在尝试实现Sequence to Sequence LSTM。特别是,我有一个具有9个特征的数据集,并且我想预测5个连续值。

我将训练和测试集及其形状分别划分为:

X TRAIN (59010, 9)

X TEST (25291, 9)

Y TRAIN (59010, 5)

Y TEST (25291, 5)
Run Code Online (Sandbox Code Playgroud)

目前,LSTM非常简单:

model = Sequential()
model.add(LSTM(100, input_shape=(9,), return_sequences=True))
model.compile(loss="mean_absolute_error", optimizer="adam", metrics= ['accuracy'])

history = model.fit(X_train,y_train,epochs=100, validation_data=(X_test,y_test))
Run Code Online (Sandbox Code Playgroud)

但是我有以下错误:

ValueError:输入0与lstm_1层不兼容:预期ndim = 3,找到的ndim = 2

谁能帮我?

python lstm keras tensorflow

3
推荐指数
1
解决办法
3348
查看次数

从数据框中排除行,除非满足其他列条件

如果行符合列表(eligibility_criteria)条件,我想从数据框中排除行,除非价目表列以“ ***”开头。这就是我所拥有的:

import pandas as pd

df = df[~df['eligibility'].str.contains(eligibility_criteria, na=False)] #This works
Run Code Online (Sandbox Code Playgroud)

如何添加此“ except when”限定词...

#df['tariff'].str.startswith("***")
Run Code Online (Sandbox Code Playgroud)

python logic pandas

3
推荐指数
1
解决办法
42
查看次数

PHP 7.1中的隐式void返回?

我在这里找到了新的规范:https://wiki.php.net/rfc/void_return_type

function lacks_return(): void {
    // valid
}
function returns_nothing(): void {
    return; // valid
}
function returns_void(): void {
    return void; // valid
}
Run Code Online (Sandbox Code Playgroud)

问:你知道幕后发生了什么吗?lacks_return函数实际上会返回void吗?

php standards php-internals php-7.1

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

熊猫将数据框值转换为列名

我想将数据框值用作列名并简化数据框。

我尝试过df.stack()然后index.map('{0[0]}_{0[1]}'.format)

Input_df(通过执行groupby获得此df):

link price  date
 A     1    01/01
 A     2    01/02
 A     1.2  01/03
Run Code Online (Sandbox Code Playgroud)

所需输出:

link price_01/01 price_01/02 price_01/03
  A      1            2         1.2
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

2
推荐指数
3
解决办法
96
查看次数

如何检查模型是否在 CUDA 上?

我想检查模型是否在 CUDA 上。怎么做?

import torch
import torchvision
model = torchvision.models.resnet18()
model.to('cuda')
Run Code Online (Sandbox Code Playgroud)

model.is_cuda()不工作的接缝。

pytorch

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

理解卷积网络层

我一直在阅读有关 Conv 网络的文章,并且自己编写了一些模型。当我看到其他模型的可视化图表时,它显示每一层都比最后一层更小更深。层有 3 个维度,如 256x256x32。这第三个数字是什么?我假设前两个数字是节点数,但我不知道深度是多少。

machine-learning deep-learning conv-neural-network pytorch

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