我正在使用PyTorch,我正在尝试对我的数据集进行验证,以获得我的神经网络中的最佳通道数。我有以下代码:
def train_during_validation():
for epoch in range (1, 201):
model.train()
optimizer.zero_grad()
out = model(data.x, data.edge_index)
loss = criterion(out[data.val_mask], data.y[data.val_mask])
loss.backward()
optimizer.step()
return loss
def validation():
loss_val = np.zeros(50, dtype = float)
model = GCN(hidden_channels = 1)
loss_val = train_during_validation()
print(loss_val)
validation()在上面的代码中,我训练了前面定义的具有16个通道的模型,并获得了0.33的损失。但是一旦我开始在hidden_channel上做验证(参见下面的代码),我的损失就不会减少(仍然是1.95)。我不明白为什么。有人能解释一下吗?
def train_during_validation(model):
print(f'Model:{model}')
for epoch in range (1, 201):
model.train()
optimizer.zero_grad()
out = model(data.x, data.edge_index)
loss = criterion(out[data.val_mask], data.y[data.val_mask])
loss.backward()
optimizer.step()
return loss
def validation():
loss_val = np.zeros(50, dtype = float)
model = GCN(hidden_channels = 1)
for i in range (50):
model = GCN(hidden_channels = i)
#print(model)
loss_val[i] = train_during_validation(model)
print(loss_val[i])
validation()发布于 2021-03-23 03:21:22
最后,我发现了一个错误:必须在def train_during_validation(model)中定义optimizer和criterion
https://stackoverflow.com/questions/66747840
复制相似问题