TypeError: Can not convert a float32 into a Tensor or Operation.
錯(cuò)誤
TypeError: Can not convert a float32 into a Tensor or Operation. # 類型錯(cuò)誤:不能將一個(gè)浮動(dòng)32轉(zhuǎn)換為一個(gè)張量或操作。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.)如其意,類型錯(cuò)誤:不能將一個(gè)浮動(dòng)32轉(zhuǎn)換為一個(gè)張量或操作。也就是在計(jì)算圖實(shí)際運(yùn)算的時(shí)候發(fā)生的錯(cuò)誤,錯(cuò)誤為數(shù)據(jù)類型錯(cuò)誤,將應(yīng)該是傳入的張量或者操作的的地方傳入了一個(gè) float32 類型的數(shù)據(jù).
分析
源碼
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)錯(cuò)誤產(chǎn)生的時(shí)候我查了查代碼,沒明白什么意思,后來debug才發(fā)現(xiàn),是變量在第二遍運(yùn)行的時(shí)候數(shù)據(jù)類型發(fā)生了改變,
其改變是在第一遍的時(shí)候,仔細(xì)看源代碼,輸出的Train_Loss與后面sess.run([Train_Step,Train_Loss], feed_dict={X: batch_xs, Y_true: batch_ys})中的’Train_Loss’同名,顯然第一遍運(yùn)行之后,原本應(yīng)該傳入session的Train_Loss就從張量變成了 float32
解決方案
避免重名,使用不同的名字
如原來的
改為
_, train_loss = sess.run([Train_Step,Train_Loss], feed_dict={X: batch_xs, Y_true: batch_ys})BUG就消失了
這是一個(gè)很低級(jí)的BUG…..但是也很有趣.
總結(jié)
以上是生活随笔為你收集整理的TypeError: Can not convert a float32 into a Tensor or Operation.的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 脚本:获取CSDN文章的访问量
- 下一篇: Python ML环境搭建与学习资料推荐