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…..但是也很有趣.

  • 相关阅读:
    容器字段FieldContainer
    时间选择框
    Java 异常处理的优劣
    RSA 公钥加密算法
    Java 添加播放MIDI音乐
    Java 内存查看与分析
    总结 Eclipse 编程常用的快捷键
    Java 基础【03】序列化和反序列化
    找出给定字符串中出现最多的字符和次数
    Javascript 限制文本字节数
  • 原文地址:https://www.cnblogs.com/fonttian/p/9162792.html
Copyright © 2011-2022 走看看