请教一下在之前课程中的一个函数问题

在上课的时候老师写了这个精度函数:
def accuracy(output,label):
** return nd.mean(output.argmax(axis = 1)==label).asscalar()**

在迭代epoch中调用:
**lr = .5
for epoch in range(10):
train_loss = 0.
train_acc = 0.
for data, label in train_data:
with ag.record():
output = net(data)
loss = softmax_cross_entropy(output,label)
loss.backward()
utils.sgd(params,lr,batch_size)
train_loss += nd.mean(loss).asscalar()
train_acc +=utils.accuracy(output,label)

test_acc = utils.evaluate_accuracy(test_data,net)
print(“Epoch %d. Loss: %f, Train acc: %f,Test acc: %f” % epoch, train_loss/len(train_data), train_acc/len(train_data),test_acc/len(test_data))**

但是在epoch迭代的时候出现几个问题:
第一次我开始迭代,前五个epoch没有问题,再跑第二个epoch会出现:
[20:37:07] c:\jenkins\workspace\mxnet-tag\mxnet\src\io…/operator/elemwise_op_common.h:135: Check failed: assign(&dattr, vec.at(i)): Incompatible attr in node at 1-th input: expected float32, got int32
主要指向的就是这个精度函数有点问题…不知道咋解决

补充一下,有几次后来我运行别的程序调用这个计算精度的accuracy函数时,会直接报这个错误,而不是多个epoch之后