我想在每个n批次之后输出它,而不是在每个纪元打印评估损失。
我每个时代大约有15万批。我想每50000批输出一次评估损失。
这可能吗?我正在使用pytorch和huggingface的预训练bert模型。
我的列车循环:
best_valid_loss = float('inf')
train_losses=[]
valid_losses=[]
for epoch in range(params['epochs']):
print('\n Epoch {:} / {:}'.format(epoch + 1, params['epochs']))
#train model
train_loss = train(scheduler, optimizer)
#evaluate model
valid_loss = evaluate()
#save the best model
if valid_loss < best_valid_loss:
best_valid_loss = valid_loss
torch.save(model.state_dict(), model_file)
# append training and validation loss
train_losses.append(train_loss)
valid_losses.append(valid_loss)
print(f'\nTraining Loss: {train_loss:.3f}')
print(f'Validation Loss: {valid_loss:.3f}')
如果要跳过例如某些列表的n
元素,可以使用enumerate
:
n = 50000
for i,epoch in enumerate(some_list):
if i%n == 0:
print('\n Epoch {:} / {:}'.format(epoch + 1, params['epochs']))
...
但在您的情况下,您只能使用一个附加条件:
n = 50000
for epoch in range(params['epochs']):
#train model
train_loss = train(scheduler, optimizer)
#evaluate model
valid_loss = evaluate()
#save the best model
if valid_loss < best_valid_loss:
best_valid_loss = valid_loss
torch.save(model.state_dict(), model_file)
# append training and validation loss
train_losses.append(train_loss)
valid_losses.append(valid_loss)
##
# print every n cycles
if epoch%n == 0:
print('\n Epoch {:} / {:}'.format(epoch + 1, params['epochs']))
print(f'\nTraining Loss: {train_loss:.3f}')
print(f'Validation Loss: {valid_loss:.3f}')
我每一步都能得到训练损失。但我确实想在tensorboard中的图'lossxx'中添加评估损失。怎么做?
我正在编写一段代码,对给定的后缀表达式求值。每个操作数和运算符之间用空格分隔,最后一个运算符后跟空格和“x”。 例子: 内插表达式:(2*3 4)*(4*3 2) 后缀表达式:23*443*2*x “x”暗示表达的结束。 输入(后缀表达式)作为字符串由另一个函数给出,该函数将内缀表达式转换为后缀表达式。 后缀评估的功能是: 我给出的例子的输出应该是“140”,但我得到的是“6”。请帮我找出错误。
我希望火花流的输出在翻转窗口的末端发送到水槽,而不是在批处理间隔。 我从一个Kafka流读取并输出到另一个Kafka流。 查询和写入输出的代码如下: 当我在一分钟的窗口内为一个特定用户发送多个记录时,我希望在一分钟结束时这些事件的总数。 但我在输出Kafka流上获得了多个输出,并在其中写入了间歇聚合。 如。 我将在一分钟内发送以下7条记录,但间隔一定时间。 我得到的结果是: 可以看到,输出在同一个
问题内容: 我正在尝试对存储进行多次更改,但是直到所有更改完成后才进行渲染。我想用redux-thunk做到这一点。 这是我的动作创建者: 我像这样派遣我的异步动作创建者: 但是,这导致每次反应后都进行渲染。我是redux-thunk的新手,我从未使用过异步中间件,但我认为它可以在这里为我提供帮助。 问题答案: 有一些方法可以实现目标: 经典方式: 通常:动作描述 发生某事 的 事实 ,但没有指定
我正在tf中编程一个模型。keras和运行模型。训练集上的evaluate()通常会产生约96%的准确率。我对测试集的评估通常很接近,大约93%。然而,当我手动预测时,模型通常不准确。这是我的代码: 我听说很多时候人们都有这个问题,那只是数据输入的问题。但我看不出这有什么问题,因为它几乎总是错误地预测(如果它是随机的,大约和你预期的一样多)。如何解决此问题? 编辑:以下是具体结果: 最后一个训练步
我理解经典例子的问题 但我无法说服自己以下是有效的还是无效的 我知道'foo(i)'和'i'的求值顺序是不确定的,但是'评估'到底是什么意思?也就是说bar的第二个参数总是42,或者'i'的当前值可以在foo改变它之前被传入吗?