一篇普通的bug日志——bug的尽头是next吗?

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: [bug 1] TypeError: ‘method’ object is not subscriptable问题代码:

[bug 1] TypeError: ‘method’ object is not subscriptable

问题代码:

print(item.full_name(), x.shape, item.parameters()[0].shape, item.parameters[1].shape)

原因:

parameters后面少了个括号。

a8c59fda9d0e4ab9bb0e586ffdee39dd.png

[bug 2] TypeError: unsupported format string passed to numpy.ndarray.format

这段报错可以用如下代码重现出来:

import numpy as np
x = np.array([1.])
print('{:4f}'.format(x))

原因:

传给{:4f}的应该是一个浮点数数值,而 x 是 numpy 的数组,于是类型不匹配。我们只需将 x 转为浮点型即可,正确代码如下:

import numpy as np
x = np.array([1.])
x = float(x)
print('{:4f}'.format(x))

[bug 3] ValueError:Hint: Expected dtype() == paddle::experimental::CppTypeToDataType::Type()

描述

学习预训练模型的 fine-tune 时,将 AI Studio 上能跑的代码拷下来,到本地就报错了,我真的一脸懵。


当时上网查 ValueError,大多说将 ‘float64’ 换成 'float32‘,但我将输入的特征astype('float32')后,还是没用。


报错信息:

ValueError: (InvalidArgument) The type of data we are trying to retrieve does not match the type of data currently contained in the container.
  [Hint: Expected dtype() == paddle::experimental::CppTypeToDataType<T>::Type(), but received dtype():5 != paddle::experimental::CppTypeToDataType<T>::Type():7.] (at ..\paddle\phi\core\dense_tensor.cc:137)
  [operator < accuracy > error]

解决

最后发现要改的是这里:

return im, int(grt)

int是 python 内置的数据类型,我将它转成 numpyint64 就好了。真没想到,python 内置的 int 居然不行。

# grt原本是给字符串
grt = np.int64(int(grt))
return im, grt

[bug 4] CondaSSLError: Encountered an SSL error.

使用 pipconda 安装 python 包时,如果开了梯子,可能会出现这样的报错,把梯子关掉就好了。

完整的报错如下:

CondaSSLError: Encountered an SSL error. Most likely a certificate verification issue.
Exception: HTTPSConnectionPool(host='mirrors.tuna.tsinghua.edu.cn', port=443):
 Max retries exceeded with url: /anaconda/pkgs/main/win-64/current_repodata.json
  (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol(_ssl.c:1125)')))

翻译:

CondaSSLError:遇到 SSL 错误。很可能是证书验证问题。 
异常:HTTPSConnectionPool(host='mirrors.tuna.tsinghua.edu.cn', port=443):
超出最大重试次数,网址为:/anaconda/pkgs/main/win-64/current_repodata.json 
(由 SSLError(SSLEOFError(8, 'EOF 发生违反协议 (_ssl.c:1125)')))

[bug 5] pip install paddleclas失败

描述

一开始看到好像是faiss包的问题,一顿操作之后,我把 faiss 包下下来了,但还是无法下载 paddleclas。这应该是 python 版本的问题,现在的版本是 python3.10.6,但我之前在 python3.8.4 的版本下使用 pip 下载成功了。处理方案

从 github 上下载 PaddleClas 的代码库后,直接 import 导入,跳过 pip 这一步。

import sys
sys.path.append('D:/code_all/gitCode/PaddleClas')  # 这里是代码库的路径
import ppcls

可能编辑器会提示 "没有名称为'ppcls'的模块”,但不用管,只要运行时不报错就行。因为sys.path.append()在运行的时候才会执行,而在它执行之前你确实没有 ppcls 这个包。

[bug 6] 想删除原来的文件夹后新建一个(逻辑错误)

错误代码片段:

import os
import shutil
isExist = os.path.exists(saveDir)
if isExist and deleteOld:
    shutil.rmtree(saveDir)
if not isExist:
    os.makedirs(saveDir)

但如果原本路径saveDir存在,则isExistTrue,执行删除,但是后面isExist依然为True,并不会重新创建路径。

修改:创建前再插入一段判断。

isExist = os.path.exists(saveDir)
if isExist and deleteOld:
    shutil.rmtree(saveDir)
isExist = os.path.exists(saveDir)
if not isExist:
    os.makedirs(saveDir)

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
运维 监控 数据可视化
日志服务 HarmonyOS NEXT 日志采集最佳实践
鸿蒙操作系统(HarmonyOS)上的日志服务(SLS)SDK 提供了针对 IoT、移动端到服务端的全场景日志采集、处理和分析能力,旨在满足万物互联时代下应用的多元化设备接入、高效协同和安全可靠运行的需求。
117272 19
|
6月前
|
安全 Java Apache
修复了log4j 的bug
修复了log4j 的bug
72 0
|
6月前
|
算法 测试技术 C++
【数据结构】模式匹配之KMP算法与Bug日志—C/C++实现
【数据结构】模式匹配之KMP算法与Bug日志—C/C++实现
71 0
好家伙!查看系统日志时我捕获了一只发生概率小于万分之一的Bug
在开始这篇文章之前想先说一句:如果一套系统暂时没问题,那只是因为它的并发量不够而已。 上周在查看系统日志时,发现了一条与众不同的日志。日志中有一半内容是正常的报文数据,而另一半内容是0x00这样的空数据
|
Android开发
Bug日志(四)——Android 防止多次点击(另解决多个列表子项点击)
在用户使用 应用的时候,经常会出现点击过快且多次点击同一控件的情况, 一方面这是因为应用或手机当前有些卡顿,网络卡啥的 另一方面也可能是由于很多应用并没有设置按钮点击时的 selector 或者其它按钮响应方式(例如点击按钮时按钮放大,常见于游戏),导致用户误认为没有点击到当前按钮。(比如使用selector再点击后更换背景颜色,图片等等)
|
XML Android开发 数据格式
Bug日志(二)-Android网路请求图片地址图片不显示
Bug日志(二)-Android网路请求图片地址图片不显示
|
存储 API 开发工具
Bug日志(三)-获取本地图片后上传失败
原来为了能给用户提供对文件的更多控制并限制文件混乱,Android Q改变了应用程序访问设备外部存储上文件的方式,例如存储在路径/ sdcard中的文件。Android Q继续使用READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限,这些权限对应于存储面向用户的运行时权限。但是,默认情况下targetSdkVersion设置为Android Q的应用(以及manifest清单开启属性来启动这个变更的应用)会获得一个沙盒视图到外部存储。此类应用程序只能看到其特定于应用程序的目录和特定媒体类型,因此应用程序不需要请求任何其他用户权限。
|
Android开发 容器
Bug日志(一):RecyclerView只显示第一行
Bug日志(一):RecyclerView只显示第一行
|
监控 小程序 JavaScript
别再乱打日志了,这样才是定位 bug 打日志的方式!
别再乱打日志了,这样才是定位 bug 打日志的方式!
|
9天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
108 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板