202312bug
cuda显存超界
1 | torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 4.07 GiB (GPU 1; 23.65 GiB total capacity; 20.39 GiB already allocated; 2.77 GiB free; 20.42 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF |
最一开始看不懂为什么已经分配而显卡上却没有进程在跑,后来直接认为它是一个显存超界的bug
RuntimeError: a Tensor with 6 elements cannot be converted to Scalar
计算loss的时候不知道为什么会有一个loss对应好几个元素的情况,在这种情况下要把loss.sum()一下然后再进行.item(),最后完成计算。对于梯度计算的报错,梯度回传只能在scalar的数据上即只有以一个元素的数字数据上才能进行。所以在进行梯度回传计算时也要用.sum
RuntimeError: grad can be implicitly created only for scalar outputsT
这个错误信息 RuntimeError: grad can be implicitly created only for scalar outputs 指的是在使用 PyTorch 进行自动微分时,你试图对非标量输出的张量直接进行反向传播(即调用 .backward()),而没有提供任何梯度参数。在 PyTorch 中,.backward() 用于计算梯度,它默认情况下只适用于标量输出,也就是只有一个元素的张量。如果你的输出是一个向量(即包含多个元素的张量),那么你需要指定一个与这个向量形状相同的张量来作为 .backward() 的参数,这个参数表示对应元素的梯度权重。
以下是一些处理这个错误的方法:
如果你的目标是计算一个标量损失的梯度:确保你的损失函数返回一个标量值。如果返回了一个向量,你可以通过对向量中的元素求和(使用 .sum())来获得一个标量。如果你需要对向量进行反向传播:提供一个与输出向量形状相同的梯度向量给 .backward()。例如,如果你的输出是一个长度为 n 的向量,你可以传递一个同样长度的包含梯度权重的向量(通常是一个全1向量)给 .backward()。
1 | import torch |
python的输出到java是乱码 有中文
1 | # 解决:强制Python使用UTF-8编码输出 |
TypeError: Object of type Tensor is not JSON serializable
没解决,但是大体可以知道是python对象的问题,应该是pytorch的某个对象的问题
sorted_df = merged_df.astype({‘chr’:’int’}).sort_values(by=’chr’)
将csv排序,先转化为int然后排序,然后转化为chr
python-javabridge 缺失
conda install -c conda-forge python-javabridge
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=’mirrors.aliyun.com’, port=443): Read timed out.
运行pip install ultralyticsplus==0.0.24 ultralytics==8.0.23时出错,应该是下载超时了,在linux下:
1 | export PIP_DEFAULT_TIMEOUT=100 |
ConnectionError: (MaxRetryError(“HTTPSConnectionPool(host=’huggingface.co’, port=443):
huggingface错误
Max retries exceeded with url: /api/models/keremberke/yolov8m-blood-cell-detection/tree/main?recursive=True&expand=False (Caused by NewConnectionError(‘<urllib3.connection.HTTPSConnection object at 0x7f0e75028ee0>: Failed to establish a new connection: [Errno 101] Network is unreachable’))”), ‘(Request ID: 82176315-b322-416a-a57c-bf15d75821f3)’)
github workflow
https://zhuanlan.zhihu.com/p/377235637
TypeError: cannot unpack non-iterable float object
消息的第一部分告诉我们,我们遇到了一个 TypeError
,当我们尝试对错误类型的值执行操作时,会发生错误。消息的第二部分告诉我们,我们正在尝试解压缩一个 non-iterable
NoneType
对象。
在 Python 中,可迭代对象是可以循环的对象,例如 list
、 tuple
或 dictionary
.解包是指从可迭代对象中提取值并将它们分配给各个变量。
直接在jupyter中可以一层一层从import点到对应的文件中去。最一开始直接卸载,准备使用github下载的版本,发现这个有点问题,因为没有readme,所以一些包应该没有安装上,所以直接用pip install的方式比较好
jax或者jaxlib没用 (cuda版本)
1 | pip install --upgrade pip |
继续出现To ignore this failure and try to use a fallback algorithm (which may have suboptimal performance), use XLA_FLAGS=–xla_gpu_strict_conv_algorithm_picker=false. Please also file a bug for the root cause of failing autotuning.
试一下XLA_FLAGS=–xla_gpu_strict_conv_algorithm_picker=false,没什么用
重装tensorflow试试
1 | conda search tensorflow |
conda install tensorflow-gpu=2.15.0
tensorflow不是很懂为什么,只认识23卡,而不认识12卡
还没搞清楚
google问题
困扰了爷爷八百年的google浏览器黑色问题:chrome://flags/#enable-force-dark 第一个disable就行了mlgb
安装steam时的问题
1 | curl libc6:amd64 libc6:i386 libegl1:amd64 libegl1:i386 libgbm1:amd64 libgbm1:i386 libgl1-mesa-dri:amd64 libgl1-mesa-dri:i386 libgl1:amd64 libgl1:i386 steam-launcher |
联网就好了,实在不行就开个梯子
奇怪的元组问题
这个函数为什么返回一个元组:def get_absolute_image_path(dir,file_name):
if(dir[-1]=='/'):
return dir + file_name
return dir + os.sep + file_name
与这个函数无关,在调用的时候之前是多个函数进行同时赋值,结果改称单个的时候忘记改回来了,所以有元组
合并维度不同问题
1 | ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 3, the array at index 0 has size 3 and the array at index 1 has size 2 |
axis为几表明在哪个维度上做append