Tensorflow错误:转换类型为<;的对象失败;类别';dict'&燃气轮机;到张量

Tensorflow错误:转换类型为<;的对象失败;类别';dict'&燃气轮机;到张量,tensorflow,machine-learning,neural-network,deep-learning,feed-forward,Tensorflow,Machine Learning,Neural Network,Deep Learning,Feed Forward,我正在尝试编写一个能识别手写数字的神经网络。我正在使用MNIST数据集和张量流库。现在,我只是在尝试训练网络,但每当我运行它时,它就会抛出一个巨大的错误。我是一个初学者,所以如果代码看起来不好,我很抱歉 将tensorflow导入为tf 从tensorflow.examples.tutorials.mnist导入输入数据 mnist=输入数据。读取数据集(“/tmp/data”,one\u hot=True) 纽结H1=600 纽结H2=500 纽结H3=500 numNodesOut=10 s

我正在尝试编写一个能识别手写数字的神经网络。我正在使用MNIST数据集和张量流库。现在,我只是在尝试训练网络,但每当我运行它时,它就会抛出一个巨大的错误。我是一个初学者,所以如果代码看起来不好,我很抱歉

将tensorflow导入为tf
从tensorflow.examples.tutorials.mnist导入输入数据
mnist=输入数据。读取数据集(“/tmp/data”,one\u hot=True)
纽结H1=600
纽结H2=500
纽结H3=500
numNodesOut=10
sizeOfBatch=150
y=tf.占位符(“浮动”)
x=tf.placeholder(“float”[None,784])
def神经网络(值):
H1={'weights':tf.Variable(tf.random_normal([784,numNodesH1]),
“偏差”:tf.Variable(tf.random_normal([numNodesH1]))
H2={'weights':tf.Variable(tf.random_normal([numNodesH1,
纽结(H2]),
“偏差”:tf.Variable(tf.random_normal([numNodesH2]))
H3={“权重”:tf.变量(tf.随机_正常值([numNodesH2,
纽结h3]),
“偏差”:tf.变量(tf.随机_正态([numNodesH3]))
输出={“权重”:tf.Variable(tf.random_normal([numNodesH3,
珠光体(,
“偏差”:tf.Variable(tf.random_normal([numNodesOut]))
FinalH1=tf.add(tf.matmul(值,H1[“权重”),H1[“偏差])
FinalH1=tf.nn.relu(FinalH1)
FinalH2=tf.add(tf.matmul(H1,H2[“权重”),H2[“偏差])
FinalH2=tf.nn.relu(FinalH2)
FinalH3=tf.add(tf.matmul(H2,H3[“权重”),H3[“偏差])
FinalH3=tf.nn.relu(FinalH3)
FinalOut=tf.matmul(H3,输出[“权重])+输出[“偏差”]
返回终局
def序列(输入数据):
预测=神经网络(输入数据)
成本=tf.reduce_平均值(
tf.nn.softmax_交叉_熵_与_logits(logits=prediction,labels=y))
optimizingTool=tf.train.AdamOptimizer()。最小化(成本)
epochnum=10
将tf.Session作为SES:
sess.run(tf.global\u variables\u initializer())
对于范围内的i(epochnum):
lostEpochs=0
对于范围内的o(int(mnist.train.num_示例/sizeOfBatch)):
ex,ey=下一批(sizeOfBatch)的列表序列
_,c=sess.run([optimizer,cost],feed_dict={x:ex,y:
ey})
lostEpochs=lostEpochs+c
打印(“Epochs completed=”,i,“/”,epochnum,“epoch loss=
“,lostEpochs)
correct=tf.equal(tf.argmax(预测,1),tf.argmax(y,1))
神经准确度=tf.reduce_平均值(tf.cast(正确,“浮动”))
打印(neuralAccuracy.eval({x:mnist.test.images,y:mnist.test.labels}))
列车(x)
每次运行此代码时,都会出现以下错误:

回溯(最近一次呼叫最后一次):
文件“C:\Users\Msi-\AppData\Local\Programs\Python\Python36\lib\site-
packages\tensorflow\python\framework\tensor_util.py”,第468行,在
制造张量原型
str_值=[proto_值中x的compat.as_字节(x)]
文件“C:\Users\Msi-\AppData\Local\Programs\Python\Python36\lib\site-
packages\tensorflow\python\framework\tensor_util.py”,第468行,在
str_值=[proto_值中x的compat.as_字节(x)]
文件“C:\Users\Msi-\AppData\Local\Programs\Python\Python36\lib\site-
packages\tensorflow\python\util\compat.py”,第65行,以字节为单位
(字节或文本)
TypeError:应为二进制或unicode字符串,获得{'weights':,'biases':}
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“C:\Users\Msi-
\AppData\Local\Programs\Python\Python36\neuralnetworktest.py“,第45行,在
列车(x)
文件“C:\Users\Msi-
\AppData\Local\Programs\Python\Python36\neuralnetworktest.py”,第29行,在
火车
预测=神经网络(输入数据)
文件“C:\Users\Msi-
\AppData\Local\Programs\Python\Python36\neuralnetworktest.py”,第22行,在
神经网络
FinalH2=tf.add(tf.matmul(H1,H2[“权重”),H2[“偏差])
文件“C:\Users\Msi-\AppData\Local\Programs\Python\Python36\lib\site-
packages\tensorflow\python\ops\math_ops.py”,第1844行,在matmul中
a=运算。将_转换为_张量(a,name=“a”)
文件“C:\Users\Msi-\AppData\Local\Programs\Python\Python36\lib\site-
packages\tensorflow\python\framework\ops.py”,第836行,在convert\u to\u tensor中
as_ref=False)
文件“C:\Users\Msi-\AppData\Local\Programs\Python\Python36\lib\site-
packages\tensorflow\python\framework\ops.py”,第926行,在
内张量转换为张量
ret=conversion\u func(值,dtype=dtype,name=name,as\u ref=as\u ref)
文件“C:\Users\Msi-\AppData\Local\Programs\Python\Python36\lib\site-
packages\tensorflow\python\framework\constant_op.py”,第229行,在
_常数张量转换函数
返回常量(v,dtype=dtype,name=name)
文件“C:\Users\Msi-\AppData\Local\Programs\Python\Python36\lib\site-
packages\tensorflow\python\framework\constant_op.py”,第208行,常量
值,dtype=dtype,shape=shape,verify\u shape=verify\u shape))
文件“C:\Users\Msi-\AppData\Local\Programs\Python\Python36\lib\site-
packages\tensorflow\python\framework\tensor_util.py”,第472行,在
制造张量原型
“支持的类型。”%(类型(值),值))
TypeError:无法将类型的对象转换为Tensor。
内容:
{'weights':,
“偏见”:}。
考虑
将图元强制转换为受支持的类型。
我想你是说

FinalH1 = tf.add(tf.matmul(value, H1["weights"]), H1["biases"])
FinalH1 = tf.nn.relu(FinalH1)
FinalH2 = tf.add(tf.matmul(FinalH1, H2["weights"]), H2["biases"])
FinalH2 = tf.nn.relu(FinalH2)
FinalH3 = tf.add(tf.matmul(FinalH2, H3["weights"]), H3["biases"])
FinalH3 = tf.nn.relu(FinalH3)
FinalOut = tf.matmul(FinalH3, output["weights"]) + output["biases"]

注意
FinalH1
而不是
H1
H2
H3
,现在它说:回溯(最后一次调用):文件“C:\Users\Msi-\AppData\Local\Programs\Python36\neuralnetworktest.py”,第44行,在序列(x)文件中“C:\Users\Msi-\AppData\Local\Programs\Python\Python36\neuralnetworktest.py”,第28行,列车预测=neuralNetwork(inputdata)文件“C:\Users\Msi-\AppData\Local\Programs\Python\Python36\neuralnetworktest.py”,第20行,neuralNetwork网络FinalH1=tf.nn.relu(FinalH1)UnboundLocalError:在赋值之前引用了局部变量'FinalH1'。您删除了第一行:
FinalH1=tf.add(tf.matmul(值,H1