Python 在使用deep learning做视频帧插值时,我遇到了损失不变的问题
从头到尾没有变化,即使小数点后的7位数字也没有变化。Python 在使用deep learning做视频帧插值时,我遇到了损失不变的问题,python,deep-learning,pytorch,Python,Deep Learning,Pytorch,从头到尾没有变化,即使小数点后的7位数字也没有变化。 这是我的网络: 这是我的密码 #实例化网络 mynet=Network() #损失函数 criterion = nn.MSELoss() #梯度下降 optimizer = optim.SGD(mynet.parameters(), lr=0.001, momentum=0.9)#学习率0.001 动量0.9 #定义训练几轮 epochs=60 dir_path = os.listdir(arguments_strVideo) #开
这是我的网络: 这是我的密码
#实例化网络
mynet=Network()
#损失函数
criterion = nn.MSELoss()
#梯度下降
optimizer = optim.SGD(mynet.parameters(), lr=0.001, momentum=0.9)#学习率0.001 动量0.9
#定义训练几轮
epochs=60
dir_path = os.listdir(arguments_strVideo)
#开始训练
for epoch in range(epochs):
for i,path in tqdm(enumerate(train_videos)):
trueFrames = [ None, None,None ]
tempFrames = [ None, None,None ]
myloss = 0
zs_all = 1
in_movie = VideoFileClip(path)
print("第{0}个视频,该视频帧数为{1}".format(i,in_movie.reader.nframes))
for intFrame, npyFrame in enumerate(npyFrame[:, :, ::-1] for npyFrame in moviepy.editor.VideoFileClip(filename=path).iter_frames()):
if intFrame%50==0:
print("已训练{0}帧,loss为{1}".format(intFrame,myloss*3/zs_all))
if intFrame%3==0 and intFrame!=0:
tempFrames[0] = trueFrames[0]
tempFrames[2] = trueFrames[2]
tempFrames[1] = estimate(tempFrames[0], tempFrames[2])
optimizer.zero_grad() #清空梯度
loss=criterion(tempFrames[1],trueFrames[1])
loss.backward(retain_graph=True)#反向传播
optimizer.step()#梯度下降
myloss+=loss.item()
zs_all = intFrame
trueFrames[intFrame%3] = torch.FloatTensor(numpy.ascontiguousarray(npyFrame.transpose(2, 0, 1).astype(numpy.float32) * (1.0 / 255.0)))
print(i,"loss:{0}".format(myloss*3/zs_all))
myloss=0
# tenFrames[4] = torch.FloatTensor(numpy.ascontiguousarray(npyFrame.transpose(2, 0, 1).astype(numpy.float32) * (1.0 / 255.0)))
希望有人能帮助我。呜呜呜呜…..请详细说明您的问题是什么,您需要什么帮助。