首页 Paddle框架 帖子详情
简单网络fluid版本,exe.run训练报错
收藏
快速回复
Paddle框架 问答模型训练 2279 1
简单网络fluid版本,exe.run训练报错
收藏
快速回复
Paddle框架 问答模型训练 2279 1
def reader():
    def reader_creator():
        for x in range(1024):
            x = x 
            y = x*x 
            yield float(x),float(y)
    return reader_creator

train_reader = paddle.batch(reader(),batch_size=1)

data   = fluid.layers.data(name='data',shape=[1],dtype='float32')
hid    = fluid.layers.fc(input=data, size=2, act='relu')
output = fluid.layers.fc(input=hid, size=1, act='relu')
label  = fluid.layers.data(name='label',shape=[1],dtype='float32')

cost   = fluid.layers.square_error_cost(input=output,label=label)
avg_cost = fluid.layers.mean(cost)

optimizer = fluid.optimizer.AdamOptimizer(learning_rate=0.001)
opts      = optimizer.minimize(avg_cost)
place = fluid.CPUPlace()
feeder = fluid.DataFeeder(place=place, feed_list=['data', 'label'])
exe = fluid.Executor(place)

for pass_id in range(1000):
    for batch_id,data in enumerate(train_reader()):
        print data
        loss = exe.run(fluid.default_main_program(),
                             feed=feeder.feed(data),
                             fetch_list=[avg_cost])
        print("Pass {0},Loss {1}".format(pass_id,loss))

写了一个简单的PaddlePaddle的Fluid版本程序,想用循环run去训练网络,但是出现以下错误:

---------------------------------------------------------------------------
EnforceNotMet                             Traceback (most recent call last)
 in ()
     29         loss = exe.run(fluid.default_main_program(),
     30                              feed=feeder.feed(data),
---> 31                              fetch_list=[avg_cost])
     32         print("Pass {0},Loss {1}".format(pass_id,loss))

/home/dzqiu/anaconda2/lib/python2.7/site-packages/paddle/fluid/executor.pyc in run(self, program, feed, fetch_list, feed_var_name, fetch_var_name, scope, return_numpy, use_program_cache)
    441 
    442         self._feed_data(program, feed, feed_var_name, scope)
--> 443         self.executor.run(program.desc, scope, 0, True, True)
    444         outs = self._fetch_data(fetch_list, fetch_var_name, scope)
    445         if return_numpy:

EnforceNotMet: enforce y_dims.size() > y_num_col_dims failed, 1 <= 1
The input tensor Y's rank of MulOp should be larger than y_num_col_dims. at [/paddle/paddle/fluid/operators/mul_op.cc:52]
PaddlePaddle Call Stacks: 
0       0x7f3db10d7736p paddle::platform::EnforceNotMet::EnforceNotMet(std::__exception_ptr::exception_ptr, char const*, int) + 486
1       0x7f3db16da696p paddle::operators::MulOp::InferShape(paddle::framework::InferShapeContext*) const + 2774
2       0x7f3db1f0ef7bp paddle::framework::OperatorWithKernel::RunImpl(paddle::framework::Scope const&, boost::variant const&) const + 91
3       0x7f3db1f0c6edp paddle::framework::OperatorBase::Run(paddle::framework::Scope const&, boost::variant const&) + 205
4       0x7f3db11734afp paddle::framework::Executor::RunPreparedContext(paddle::framework::ExecutorPrepareContext*, paddle::framework::Scope*, bool, bool, bool) + 255
5       0x7f3db1174500p paddle::framework::Executor::Run(paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool) + 128

望大家指出错误,谢谢

0
收藏
回复
全部评论(1)
时间顺序
A
AIStudio786269
#2 回复于2018-09

你好,你忘记初始化weight了。

...

exe = fluid.Executor(place)

加上这句: exe.run(fluid.default_startup_program())

for pass_id in range(1000):

...

1
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户