我正在尝试训练一个网络,但我得到了,我将批量大小设置为 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) 我想保存最好的模型,然后在测试期间加载它。所以我使用了以下方法:
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)). 但是,我不想将参数保存到文件中,因为训练和测试函数在一个文件中。
我正在尝试通过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) 如何将学习率调度程序与以下优化程序一起使用?
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) 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分类算法.
我是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
谁能帮我?
如果行符合列表(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) 我在这里找到了新的规范: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吗?
我想将数据框值用作列名并简化数据框。
我尝试过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) 我想检查模型是否在 CUDA 上。怎么做?
import torch
import torchvision
model = torchvision.models.resnet18()
model.to('cuda')
Run Code Online (Sandbox Code Playgroud)
model.is_cuda()不工作的接缝。
我一直在阅读有关 Conv 网络的文章,并且自己编写了一些模型。当我看到其他模型的可视化图表时,它显示每一层都比最后一层更小更深。层有 3 个维度,如 256x256x32。这第三个数字是什么?我假设前两个数字是节点数,但我不知道深度是多少。