这个是paddlepaddle文档-快速上手-编程指南里的一段程序
# 定义变量
import paddle.fluid as fluid
a = fluid.data(name="a", shape=[None, 1], dtype='int64')
b = fluid.data(name="b", shape=[None, 1], dtype='int64')
# 组建网络(此处网络仅由一个操作构成,即elementwise_add)
result = fluid.layers.elementwise_add(a,b)
# 准备运行网络
cpu = fluid.CPUPlace() # 定义运算设备,这里选择在CPU下训练
exe = fluid.Executor(cpu) # 创建执行器
exe.run(fluid.default_startup_program()) # 网络参数初始化
# 读取输入数据
import numpy
data_1 = int(input("Please enter an integer: a="))
data_2 = int(input("Please enter an integer: b="))
x = numpy.array([[data_1]])
y = numpy.array([[data_2]])
# 运行网络
outs = exe.run(
feed={'a':x, 'b':y}, # 将输入数据x, y分别赋值给变量a,b
fetch_list=[result] # 通过fetch_list参数指定需要获取的变量结果
)
# 输出计算结果
print "%d+%d=%d" % (data_1,data_2,outs[0][0])
我觉得它是一段用python2写的代码,我用python3运行的时候就会稍微有点问题.
首先是
data_1 = int(input("Please enter an integer: a="))
data_2 = int(input("Please enter an integer: b="))
如果你直接运行这个,再运行之后的代码,会出现报错
ValueError: The data type of fed Variable 'b' must be 'int64', but received 'int32'
这个问题我的解决办法是
data_1 = numpy.int64(input("Please enter an integer: a="))
data_2 = numpy.int64(input("Please enter an integer: b="))
然后就是
print "%d+%d=%d" % (data_1,data_2,outs[0][0])
要改成
print("%d+%d=%d" % (data_1,data_2,outs[0][0]))
好了,这下就能正常输出了