fluid版本如何做计算并打印出来

  • 问题描述:我使用Fluid版的PaddlePaddle编写了一段简单的加法计算代码,此时想要获得加法计算的结果,不需要张量本身的信息,但得到sum() takes 1 positional argument but 2 were given报错

  • 报错输出:

Traceback (most recent call last):
  File "/Users/jizhi/Desktop/Paddle/Paddlecode/test.py", line 7, in <module>
    c = fluid.layers.sum(a,b)
TypeError: sum() takes 1 positional argument but 2 were given
  • 问题复现:
# coding=utf-8
import paddle.fluid as fluid

# 创建两常量
a = fluid.layers.fill_constant(shape=[2, 3], dtype="float32", value=1.0)
b = fluid.layers.fill_constant(shape=[2, 3], dtype="float32", value=1.0)

# 加法计算
c = fluid.layers.sum(a, b)

# 转换为打印信息
c_ = fluid.layers.Print(c)
print(c_)
  • 问题分析:
    PaddlePaddle是执行与模型设计分离的,即使用python编写的只是定义了模型的结构,但并不会真正的运行,如果要获得对应的值,要先定义执行器,然后将最后要获得的结果传入执行器,让执行器依旧模型的结构执行。

而这里的报错原因是因为fluid.layers.sum()方法使用错误,这种风格的写法是TensorFlow的写法,而PaddlePaddle的加法操作的写法与之不同。

  • 解决方法:

修改fluid.layers.sum()方法的使用方式,并添加相应的执行器exe,运行执行器则可以获得结果。

import paddle.fluid as fluid

a = fluid.layers.fill_constant(shape=[2,3], dtype='float32', value=1.0)
b = fluid.layers.fill_constant(shape=[2,3], dtype='float32', value=1.0)

c = fluid.layers.sum(x=[a,b])
exe = fluid.Executor(fluid.CPUPlace())
exe.run(fluid.default_startup_program())
out = exe.run(fluid.default_main_program(), fetch_list=[c])
print(out)

更多细节可以参考PaddlePaddle API文档:http://www.paddlepaddle.org/documentation/api/en/1.1/layers.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值