PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
22.1k stars 5.55k forks source link

infer的时候报Check failed: (height * width) % getSize() == 0UL错误 #10749

Closed kanchangcheng closed 6 years ago

kanchangcheng commented 6 years ago

预测的时候报如下错误,麻烦值班同学帮忙分析原因: F0517 11:16:12.015717 1625 ResizeLayer.cpp:54] Check failed: (height * width) % getSize() == 0UL (648 vs. 0) Check failure stack trace: @ 0x7f3d27564a5d google::LogMessage::Fail() @ 0x7f3d2756850c google::LogMessage::SendToLog() @ 0x7f3d27564583 google::LogMessage::Flush() @ 0x7f3d27569a1e google::LogMessageFatal::~LogMessageFatal() @ 0x7f3d271e8882 paddle::ResizeLayer::forward() @ 0x7f3d27143e3d paddle::NeuralNetwork::forward() @ 0x7f3d270e29dd _wrap_GradientMachine_forward @ 0x4c30ce PyEval_EvalFrameEx @ 0x4b9ab6 PyEval_EvalCodeEx @ 0x4c1e6f PyEval_EvalFrameEx @ 0x4b9ab6 PyEval_EvalCodeEx @ 0x4c1e6f PyEval_EvalFrameEx @ 0x4d4c9d (unknown) @ 0x4bc9b6 PyEval_EvalFrameEx @ 0x4d4c9d (unknown) @ 0x4bc9b6 PyEval_EvalFrameEx @ 0x4b9ab6 PyEval_EvalCodeEx @ 0x4c16e7 PyEval_EvalFrameEx @ 0x4b9ab6 PyEval_EvalCodeEx @ 0x4c16e7 PyEval_EvalFrameEx @ 0x4c136f PyEval_EvalFrameEx @ 0x4b9ab6 PyEval_EvalCodeEx @ 0x4eb30f (unknown) @ 0x4e5422 PyRun_FileExFlags @ 0x4e3cd6 PyRun_SimpleFileExFlags @ 0x493ae2 Py_Main @ 0x7f3d4420a830 __libc_start_main @ 0x4933e9 _start @ (nil) (unknown) Aborted (core dumped)

附件: import sys, os import paddle.v2 as paddle import time

from STResNet import STResNet

def main(): datadim_c = 6 72 72 datadim_p = 2 72 72 datadim_t = 2 72 72 datadim_ex = 31

if len(sys.argv) == 1:
    print('self def errror: input fomat error')
print('need to specify  residual units')
    sys.exit(-1)
    # nb_residual_unit = 2  # number of residual units
else:
    nb_residual_unit = int(sys.argv[1])  # number of residual units

# PaddlePaddle init
paddle.init(use_gpu=True)

input_c = paddle.layer.data(
    name="input_c", type=paddle.data_type.dense_vector(datadim_c))
input_p = paddle.layer.data(
    name="input_p", type=paddle.data_type.dense_vector(datadim_p))
input_t = paddle.layer.data(
    name="input_t", type=paddle.data_type.dense_vector(datadim_t))
input_ex = paddle.layer.data(
    name="input_ex", type=paddle.data_type.dense_vector(datadim_ex))

# Add neural network config
# option 1. resnet
main_output = STResNet(input_c, input_p, input_t, input_ex, external_dim=datadim_ex, nb_residual_unit=nb_residual_unit)

def infer_data():
    def reader():
        with open('/work/shenhao/gen_big_data/big_train_data_v1/predict_20180308', 'r') as f:
            for line in f:
                line = line.strip(' ').split()
                X_C = line[1: 31105]
                X_P = line[31105: 31105+10368]
                X_T = line[41473: 41473+10368]
                X_E = line[51841: 51841+31]
                yield X_C, X_P, X_T, X_E
    return reader()

test_data = []
test_label = []
n = 1
for item in infer_data():
    test_data.append((item[0], item[1], item[2], item[3],))
    print(n)
    n = n + 1
    #test_label.append(item[4])

# Create parameters
para_path = '/work/shenhao/paddle/STResNet_network_ok/params_pass_1.tar'

#print len(data_infer)
#print data_infer
with open(para_path, "r") as f:
    parameters = paddle.parameters.Parameters.from_tar(f)
img = paddle.infer(
    output_layer=main_output, 
    parameters=parameters, 
    input=test_data,
    #input=[item for item in infer_data()],
    feeding={'input_c': 0,
           'input_p': 1,
           'input_t': 2,
           'input_ex': 3})
print(img)

if name == 'main': ts_batch = time.time() ts_pass = time.time() main()

guoshengCS commented 6 years ago

不太清楚整个网络结构,但单看这个resize_layer在配置时要求(height * width) % size == 0 请结合网络结构和数据的大小确认下。