PaddleX icon indicating copy to clipboard operation
PaddleX copied to clipboard

Flask 运行 报错 ValueError: signal only works in main thread of the main interpreter

Open lonelyboychz opened this issue 3 years ago • 0 comments

@app.route("/animosityDs/test", methods=['POST', 'GET']) def runrunrun(): pdx.pretrain_dir = save_dir # 下载和解压蔬菜分类数据集 # veg_dataset = 'https://bj.bcebos.com/paddlex/datasets/vegetables_cls.tar.gz' # pdx.utils.download_and_decompress(veg_dataset, path='./') # 定义训练和验证时的transforms # API说明https://paddlex.readthedocs.io/zh_CN/develop/apis/transforms/cls_transforms.html train_transforms = T.Compose( [T.RandomCrop(crop_size=224), T.RandomHorizontalFlip(), T.Normalize()]) # 初始化评价参数 eval_transforms = T.Compose([ T.ResizeByShort(short_size=256), T.CenterCrop(crop_size=224), T.Normalize() ])

# 定义训练和验证所用的数据集
# API说明:https://paddlex.readthedocs.io/zh_CN/develop/apis/datasets.html#paddlex-datasets-imagenet

# laozhu
train_dataset = pdx.datasets.ImageNet(  # 定义训练集
    data_dir='/',
    file_list='/disk/TrainModel/txt/animal_distinguish/train_list.txt',
    label_list='/disk/TrainModel/txt/animal_distinguish/lable_list.txt',
    transforms=train_transforms,
    shuffle=True)

eval_dataset = pdx.datasets.ImageNet(  # 定义评价集
    data_dir='/',
    file_list='/disk/TrainModel/txt/animal_distinguish/evl_list.txt',
    label_list='/disk/TrainModel/txt/animal_distinguish/lable_list.txt',
    transforms=eval_transforms)

# 初始化模型,并进行训练
# 可使用VisualDL查看训练指标,参考https://paddlex.readthedocs.io/zh_CN/develop/train/visualdl.html
num_classes = len(train_dataset.labels)
print('数量:' + str(num_classes))
# model = pdx.cls.MobileNetV3_small(num_classes=num_classes)  # 定义分类模型
model = pdx.cls.ResNet50_vd(num_classes=num_classes)  # 定义分类模型
# 模型保存位置
print("模型训练开始")
start_time = time.perf_counter()
model.train(
    num_epochs=20,
    train_dataset=train_dataset,
    train_batch_size=8,
    eval_dataset=eval_dataset,
    lr_decay_epochs=[4, 6, 8],
    learning_rate=0.025,
    save_interval_epochs=5,
    save_dir="output/3060_gpuonelaozhumodel_0"
    # eval_metric_loss=0.05
    # use_vdl=True
)
end_time = time.perf_counter() - start_time
print("训练完成,耗时:" + str(end_time))
return ResultData.success("成功")

if name == "main": app.run(host='0.0.0.0', port=8095, debug=False, use_reloader=False) logger.info("项目启动成功")

windos运行没问题 centos7 上报错 ValueError: signal only works in main thread of the main interpreter

lonelyboychz avatar Jun 06 '22 07:06 lonelyboychz