请问下下面的batch_id是什么意思?在for循环里, batch_id和data是同时变化么?
for epoch in range(EPOCH_NUM):
for batch_id, data in enumerate(train_loader()):
images = norm_img(data[0]).astype('float32')
labels = data[1].astype('float32')
#前向计算的过程
predicts = model(images)
# 计算损失
loss = F.square_error_cost(predicts, labels)
avg_loss = paddle.mean(loss)
#每训练了1000批次的数据,打印下当前Loss的情况
if batch_id % 1000 == 0:
print("epoch_id: {}, batch_id: {}, loss is: {}".format(epoch, batch_id, avg_loss.numpy()))
#后向传播,更新参数的过程
avg_loss.backward()
opt.step()
opt.clear_grad()
循环变量。是同时变化的
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标
https://www.runoob.com/python/python-func-enumerate.html
你这个例子的意思就是将train_loader()函数的返回值,用enumerate() 函数去获取列表数据下标,然后返回数据下标加数据组合的列表。
每循环一次,读取enumerate() 返回列表的一个元素(这个元素有两个值,一个值赋值给batch_id, 一个值赋值给data)。
循环次数和 循环到的数组内容