【Bug】记录2025年遇到的Bug以及修复方案

news2025/4/25 2:27:42

--------------------------------------------------------分割线 2025.3.25-------------------------------------------------------windows环境下通过命令行终端(必须是命令行下,直接赋值传递,代码正常)的形式传递字符串时,被转义,linux系统下就不存在这种情况

例如在windows系统环境下,执行下面的命令:

python test.py --model_params "{"n_estimators":200,"max_depth":12,"criterion":"mse","n_jobs":None,"random_state":10,"warm_start":False}"

在这里插入图片描述

变量的引号、值的引号都不见了,消失了!这导致算法参数赋值出现报错。找了很长时间这个问题到底是什么情况,如何避免,发生linux系统终端执行就不存在这个情况,得出的结论是和系统有关。(windows下使用不同的python版本也同样报错)

解决办法:
编写一个函数,对从终端获取的参数进行重写,变成符合要求的形式。当然这也结合了大模型给出的代码。

函数代码如下:

def convert_value(a):
    if a == 'True':
        return True
    elif a == 'False':
        return False
    elif a == 'None':
        return None
    # 尝试转换为整数
    try:
        int_val = int(a)
        if str(int_val) == a:
            return int_val
    except ValueError:
        pass
    # 尝试转换为浮点数
    try:
        float_val = float(a)
        if str(float_val) == a:
            return float_val
    except ValueError:
        pass
    # 其他情况返回原字符串
    return a


def convert_dict(s):
    # s = {A:a, B: b}, 转成字典
    # print("第一个s:", s)
    s = s.strip('{}')
    # print("strip后的s:", s)
    # 分割键值对
    pairs = [pair.strip() for pair in s.split(',')]
    print("pairs:", pairs)
    # 转换为字典
    result = {}
    for pair in pairs:
        key, value = pair.split(':')
        print(key, value)
        result[key.strip()] = convert_value(value.strip())

    return result

然后再在终端执行命令,一切正常:

在这里插入图片描述
完整代码如下:

# -*- coding: utf-8 -*-
"""
Created on Wed Mar 26 19:48:50 2025

@author: AIexplore
"""

import argparse
import json
from sklearn.ensemble import RandomForestRegressor


def convert_value(a):
    if a == 'True':
        return True
    elif a == 'False':
        return False
    elif a == 'None':
        return None
    # 尝试转换为整数
    try:
        int_val = int(a)
        if str(int_val) == a:
            return int_val
    except ValueError:
        pass
    # 尝试转换为浮点数
    try:
        float_val = float(a)
        if str(float_val) == a:
            return float_val
    except ValueError:
        pass
    # 其他情况返回原字符串
    return a


def convert_dict(s):
    # s = {A:a, B: b}, 转成字典
    # print("第一个s:", s)
    s = s.strip('{}')
    # print("strip后的s:", s)
    # 分割键值对
    pairs = [pair.strip() for pair in s.split(',')]
    print("pairs:", pairs)
    # 转换为字典
    result = {}
    for pair in pairs:
        key, value = pair.split(':')
        print(key, value)
        result[key.strip()] = convert_value(value.strip())

    return result


def model_train(params):
    print("最终参数:", params)
    model = RandomForestRegressor(**params)
    print("model:", model)


if __name__ == "__main__":
    arg_parser = argparse.ArgumentParser("launcher")
    arg_parser.add_argument('--model_params', type=str, help="模型的输入参数", default='{}')
    args = arg_parser.parse_args()
    
    # 获取参数
    params = args.model_params
    print("命令行获取参数:", params)
    
    # windows环境下转换
    params = convert_dict(params)
    print("转换获取参数:", params)

    # json
    # params = json.loads(params)
    # print("命令行获取参数:", params)

    model_train(params)
    
    # 必须使用双引号, 单引号报错
    # python test.py --model_params "{"n_estimators":200,"max_depth":12,"criterion":"mse","n_jobs":None,"random_state":10,"warm_start":False}"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2324136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【NLP 46、大模型技术发展】

目录 一、ELMo 2018 训练目标 二、GPT-1 2018 训练目标 三、BERT 2018 训练目标 四、Ernie —— baidu 2019 五、Ernie —— Tsinghua 2019 六、GPT-2 2019 七、UNILM 2019 八、Transformer - XL & XLNet 2019 1.模型结构 Ⅰ、循环机制 Recurrence Mechanism Ⅱ、相对位置…

《Python实战进阶》No34:卷积神经网络(CNN)图像分类实战

第34集:卷积神经网络(CNN)图像分类实战 2025年3月28日更新 增加了 CNN和AI大模型关系的说明。 2025年3月29日更新了代码,优化损失系数曲线可视化。 详细环境配置依赖和可一次性复制的完整代码见文末。 摘要 最近大模型推陈出新迭…

【qt】 布局器

参考博客:https://blog.csdn.net/Fdog_/article/details/107522283 目录 布局管理器概念常见的布局管理器及特点🔵QHBoxLayout水平布局🔵QVBoxLayout垂直布局 🔵QGridLayout网格布局 🔵QFormLayout表单布局 QT 高级布…

VMware Windows Tools 存在认证绕过漏洞(CVE-2025-22230)

漏洞概述 博通公司(Broadcom)近日修复了 VMware Windows Tools 中存在的一个高危认证绕过漏洞,该漏洞编号为 CVE-2025-22230(CVSS 评分为 9.8)。VMware Windows Tools 是一套实用程序套件,可提升运行在 VM…

【问题解决】Linux安装conda修改~/.bashrc配置文件后,root 用户下显示 -bash-4.2#

问题描述 在Linux安装conda下的python环境时候,修改了~/.bashrc文件,修改完成后,再次进入服务器后,登录时候显示的不是正常的[rootlocalhost ~]#,而是-bash-4.2# 原因分析: 网上原因有:/root下…

RabbitMQ 技术详解:异步消息通信的核心原理与实践

这里写目录标题 RabbitMQ 技术详解:异步消息通信的核心原理与实践一、RabbitMQ 本质剖析核心架构组件 二、核心功能与应用场景主要作用典型应用场景 三、工作流程深度解析消息传递流程关键协议机制 四、Java 实现示例1. 依赖配置(Maven)2. 消…

LLM架构解析:NLP基础(第一部分)—— 模型、核心技术与发展历程全解析

本专栏深入探究从循环神经网络(RNN)到Transformer等自然语言处理(NLP)模型的架构,以及基于这些模型构建的应用程序。 本系列文章内容: NLP自然语言处理基础(本文)词嵌入&#xff0…

k近邻算法K-Nearest Neighbors(KNN)

算法核心 KNN算法的核心思想是“近朱者赤,近墨者黑”。对于一个待分类或预测的样本点,它会查找训练集中与其距离最近的K个样本点(即“最近邻”)。然后根据这K个最近邻的标签信息来对当前样本进行分类或回归。 在分类任务中&#…

【Android15 ShellTransitions】(九)结束动画+Android原生ANR问题分析

finishTransition这部分的内容不多,并且我个人的实际工作中很少接触这块,因此我之前都觉得没有必要专门开一篇去分析最后留下的这一丁点儿的动画流程。但是最近碰到了一个google原生ANR问题,正好是和这块相关的,也让我意识到了fin…

如何让DeepSeek-R1在内网稳定运行并实现随时随地远程在线调用

前言:最近,国产AI圈里的新星——Deepseek,简直是火到不行。但是,你是不是已经对那些千篇一律的手机APP和网页版体验感到腻味了?别急,今天就带你解锁一个超炫的操作:在你的Windows电脑上本地部署…

STM32通用定时器结构框图

STM32单片机快速入门 通用定时器框图 TIM9和TIM12 通用定时器框图 TIM9和TIM12 (二) 通用定时器框图

How to install vmware workstation pro on Linux mint 22

概述 VMware 是一家专注于虚拟化技术和云计算解决方案的全球领先软件公司,成立于1998年,总部位于美国加州。它的核心技术是通过“虚拟化”将一台物理计算机的硬件资源(如CPU、内存、存储等)分割成多个独立的虚拟环境(…

深度学习 Deep Learning 第11章 实用方法论

深度学习 Deep Learning 第11章 实用方法论 章节概述 本章深入探讨了机器学习在实际应用中的方法论,强调了从确定目标到逐步优化的系统性过程。在机器学习项目中,明确的目标和性能指标是指导整个开发过程的关键。通过建立初始的端到端系统,…

如何排查C++程序的CPU占用过高的问题

文章目录 可能的原因程序设计的BUG系统资源问题恶意软件硬件问题 通常步骤一个简单的问题代码在windows平台上如何排查Windows Process ExplorerWinDBG 在Linux平台如何排查使用TOP GDBPerf 可能的原因 程序设计的BUG 有死循环低效算法与数据结构滥用自旋锁频繁的系统调用&a…

Linux云计算SRE-第二十一周

构建单节点prometheus,部署node exporter和mongo exporter。构建kibana大盘。包含主机PU使用率,主机MEM使用率,主机网络包速度。mongo db大盘,包含节点在线状态,读操作延迟等 一、实验环境准备 - 节点信息&#xff1…

无人机,云台参数设置,PWM输出控制云台俯仰

目录 1、云台与飞控的连接 2、PX4飞控控制云台,QGC地面站的设置 3、遥控器映射通道设置 4、其他设置 4.1、COM_PREARM_MODE,预解锁模式 4.2、RC9_DZ ,遥控器通道死区设置 1、云台与飞控的连接 首先确定一下,设置飞控第几路…

EtherCAT转ProfiNet协议转换网关构建西门子PLC与海克斯康机器人的冗余通信链路

一、案例背景 某电子制造企业的5G通信模块组装线,采用西门子S7-1200PLC(ProfiNet主站)进行产线调度,而精密组装工序由3台海克斯康工业机器人(EtherCAT从站)完成。由于协议差异,机器人动作与PLC…

网络中常用协议

一, TCP协议 TCP(Transmission Control Protocol,传输控制协议)是互联网核心协议之一,位于传输层,为应用层提供可靠的、面向连接的数据传输服务。 1. TCP的核心特点 特性说明面向连接通信前需通过三次握手建立连接&a…

自动驾驶04:点云预处理03

点云组帧 感知算法人员在完成点云的运动畸变补偿后,会发现一个问题:激光雷达发送的点云数据包中的点云数量其实非常少,完全无法用来进行后续感知和定位层面的处理工作。 此时,感知算法人员就需要对这些数据包进行点云组帧的处理…

Linux内核软中断分析

一、软中断类型 在Linux内核中,中断处理分为上半部(硬中断)和下半部。上半部负责快速响应硬件事件,而下半部用于处理耗时任务,避免阻塞系统。下半部有三种机制:软中断(Softirq)、小任…