zoukankan      html  css  js  c++  java
  • TypeError: Can not convert a float32 into a Tensor or Operation.

    错误

    TypeError: Can not convert a float32 into a Tensor or Operation.
    # 类型错误:不能将一个浮动32转换为一个张量或操作。
    
    TypeError: Fetch argument 2.3025854 has invalid type <class 'numpy.float32'>, must be a string or Tensor. (Can not convert a float32 into a Tensor or Operation.)
    

    如其意,类型错误:不能将一个浮动32转换为一个张量或操作。也就是在计算图实际运算的时候发生的错误,错误为数据类型错误,将应该是传入的张量或者操作的的地方传入了一个 float32 类型的数据.

    分析

    源码

          for step in range(1000):
                batch_xs, batch_ys = mnist.train.next_batch(100)
                _, Train_Loss = sess.run([Train_Step,Train_Loss], feed_dict={X: batch_xs, Y_true: batch_ys})
                print('Train step :',step,'Train_Losss :',Train_Loss)

    错误产生的时候我查了查代码,没明白什么意思,后来debug才发现,是变量在第二遍运行的时候数据类型发生了改变,
    变量的数据类型发生了改变

    其改变是在第一遍的时候,仔细看源代码,输出的Train_Loss与后面sess.run([Train_Step,Train_Loss], feed_dict={X: batch_xs, Y_true: batch_ys})中的’Train_Loss’同名,显然第一遍运行之后,原本应该传入session的Train_Loss就从张量变成了 float32

    解决方案

    避免重名,使用不同的名字
    如原来的

    _, Train_Loss = sess.run([Train_Step,Train_Loss], feed_dict={X: batch_xs, Y_true: batch_ys})

    改为

     _, train_loss = sess.run([Train_Step,Train_Loss], feed_dict={X: batch_xs, Y_true: batch_ys})

    BUG就消失了
    这是一个很低级的BUG…..但是也很有趣.

  • 相关阅读:
    小酌重构系列[3]——方法、字段的提升和降低
    FPGA实现视频图像的水印添加
    FPGA实现图像中心差分变换
    FPGA实现图像几何变换:缩放
    FPGA实现图像几何变换:平移
    FPGA实现图像几何变换:旋转
    FPGA实现图像几何变换:镜像
    FPGA实现图像几何变换:裁剪
    FPGA实现钢笔画和浮雕效果
    FPGA实现图像的bit平面分层
  • 原文地址:https://www.cnblogs.com/fonttian/p/7342388.html
Copyright © 2011-2022 走看看