tensorflow中的.numpy()函数是啥


        with tf.GradientTape() as tape:  # with结构记录梯度信息
            y = tf.matmul(x_train, w1) + b1  # 神经网络乘加运算
            y = tf.nn.softmax(y)  # 使输出y符合概率分布(此操作后与独热码同量级,可相减求loss)
            y_ = tf.one_hot(y_train, depth=3)  # 将标签值转换为独热码格式,方便计算loss和accuracy
            loss = tf.reduce_mean(tf.square(y_ - y))  # 采用均方误差损失函数mse = mean(sum(y-out)^2)
            print('loss 类型:\t',type(loss))
            loss_all += loss.numpy()  # 将每个step计算出的loss累加,为后续求loss平均值提供数据,这样计算的loss更准确

最后一行,loss.numpy()是干了啥,这是个啥函数,有啥用

因为这里的loss是tensor,所以调用loss.numpy()将其转换为numpy数组。这里最主要的原因是loss_all一开始不是tensor类型,如果loss_all是tensor类型,则可以不用loss.numpy()。进行类型转换,只是为了确保语法正确

没记错的话,是将tensor转成numpy.array

tensor.numpy()会返回一个与tensor数据一致的numpy数组

img