自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (1)
  • 收藏
  • 关注

原创 Python:打印目录下每层的文件总数

每一行的数字代表该级目录下的文件总数(包括子目录),下面还会给出每个子目录的统计情况,以及非目录文件数量。

2023-09-22 16:09:07 264

原创 Python:list连接时,直接“+=”和=后+的区别

这里的本意,是想要在b后额外连接上[4, 5]这个列表,但是坑点在于使用+=会导致a的值也发生了变化,打印a和b的结果都是[1, 2, 3, 4, 5]。如果不想改变a,那么应该写成。这时a就仍然是[1, 2, 3]。当然,对b赋值的时候使用a.copy()也可以避免a被改变,这里的要点是不能简单把+=和=后+完全等同。

2023-08-01 19:59:41 248

原创 Python:列表去重并保持元素原有顺序

借助set,并使用原列表的index方法作为比较函数进行排序即可。use_last_duplicate为False时,重复元素以在原列表中第一次出现的位置为准,这也是因为index方法返回的就是第一次出现的下标;而use_last_duplicate为True时,重复元素以在原列表中最后一次出现的位置为准

2023-07-17 11:24:50 349

原创 Linux/MacOS:如何在终端中使用上下键快速查阅历史命令

Linux/MacOS:如何在终端中使用上下键快速查阅历史命令;command not found: bind;MacOS里绑定快捷键相关的命令是bindkey而不是bind,并且命令格式也有一点区别。

2023-06-08 14:50:15 1844 1

原创 Python:protobuf版本冲突的一种可能解决方法

This program was compiled against version 3.1.0 of the Protocol Buffer runtime library, which is not compatible with the installed version (3.20.3).

2023-06-01 17:17:44 2220

原创 Linux:Ubuntu上运行qt时报错Could not load the Qt platform plugin “xcb“ in ““ even though it was found.

之后就反复运行qt程序,如果还报错缺少哪个文件,例如libxcb-keysyms.so.1,就同样安装对应的库libxcb-keysyms1,最终就能成功运行了。

2023-05-27 21:49:42 1142

原创 Python:安装paddlepaddle后运行代码报错ImportError: core_avx.so: undefined symbol: _dl_sym, version GLIBC_PRIVA

安装paddlepaddle后运行代码报错ImportError: core_avx.so: undefined symbol: _dl_sym, version GLIBC_PRIVA。改成下面这个版本就好了:python -m pip install paddlepaddle==2.4.0rc0 -i https://pypi.tuna.tsinghua.edu.cn/simple

2023-05-25 16:06:49 1009

原创 Python:使用位运算进行大小写转换

今天学习到了一种使用位运算进行大小写转换的方法,分享出来。常见的英语字母大小写转换有三种需求:大小写互换、全转为小写、全转为大写。最常规的做法就是首先判断一下字符是大写字母还是小写字母,然后对应加或减大小写字母的ASCII码差值。注意到这个固定的ASCII码差值等于32,也就是1^5,同时所有大写字母的二进制第6位都是0、小写字母的二进制第6位都是1。基于此,可以写出三种需求的位运算实现版本代码

2023-05-09 10:38:35 195

原创 Python:批量重命名whl文件

whl文件是可以使用pip install命令离线安装的Python包。使用whl文件最讨厌的一点在于,由于文件名里指定了其兼容的操作系统版本等信息,在一台机器上可以使用的whl文件放到另一台机器上可能就没法用了。要解决这个问题最直接的做法就是修改whl文件名,如果需要安装的whl文件特别多的时候就会很费时间,写了一个Python脚本批量处理,可以把目录下的所有whl文件统一重命名成大多数平台都支持的py3-none-any版本,代码如下

2023-04-23 11:08:44 292

原创 实用技巧:Win11自带截屏、录屏功能

win11系统自带了几个好用的截屏和录屏工具,无需下载额外软件。比较适合简单的截屏、录屏需求,如果需要更复杂的图片和视频编辑,可能还是需要专业软件。这些功能win10可能也有一部分,笔者没有实际测试过。后续发现其他好用的功能再继续更新,虽然这些内置工具有一些缺陷,但是不用下载乱七八糟的软件还是挺方便的。

2023-04-17 14:00:41 2051

原创 Linux:解压当前目录下的所有压缩包到同名目录,并在完成后删除原始压缩包

根据需要,可以修改第一行压缩包的拓展名,但要注意要同时更改tar命令的-xvf参数,以及第1、2行file的截取范围。中的4个问号代表删除文件名最后4个字符,也就是.tar后缀;如果要改成解压其他格式的压缩包,需要对应修改问号的数量。

2023-04-04 14:37:13 1466

原创 Python:解决类的定义内部无法使用类名为函数注解及代码补全带来的不便

为了美观以及便于代码维护的需要,我们一般会使用函数注解标明每个参数以及返回值的类型。另外,如果写了函数注解,我们在编写代码时编译器也会根据参数的类型提供代码补全提示。但是这样写编译器是会有错误提示的,执行代码会报错“”,并且使用self.right时也没有Node相关属性及方法的补全提示(这里以Pycharm为例)。简单来说,这是因为在内部Node类还没有完成定义,现在类名是无法使用的状态,更加具体的解释感兴趣的同学可以自行搜索,这里不再赘述。解决方法也很简单,就是给类名加上引号。

2022-12-15 22:48:24 459

原创 Linux:解决输出重定向时,代码中包含回车符\r导致的输出结果不美观的问题

解决输出重定向时,代码中包含回车符\r导致的输出结果不美观的问题

2022-10-21 15:39:44 1254

原创 Pytorch:解决使用yolov5时网络不佳导致无法下载数据集的问题

Pytorch:解决使用yolov5时网络不佳导致无法下载数据集的问题

2022-10-04 17:43:38 962

原创 C++:使用std::bind和形参包实现“万能函数指针”

C++:使用std::bind和形参包实现“万能函数指针”

2022-09-26 11:06:55 1407

原创 Qt报错:error: C2661: “QWeakPointer<QObject>::QWeakPointer”: 没有重载函数接受 2 个参数

error: C2661: “QWeakPointer::QWeakPointer”: 没有重载函数接受 2 个参数

2022-09-23 10:33:29 1032

原创 OpenGL:使用Qt的OpenGL无法正确显示,出现QOpenGLBuffer::bind: buffer is not valid in the current context的错误

OpenGL:使用Qt的OpenGL无法正确显示,出现QOpenGLBuffer::bind: buffer is not valid in the current context的错误

2022-08-12 17:54:56 1597

原创 Pytorch:修改模型的特定模块/层

def _set_module(model, submodule_key, module): tokens = submodule_key.split('.') sub_tokens = tokens[:-1] cur_mod = model for s in sub_tokens: cur_mod = getattr(cur_mod, s) setattr(cur_mod, tokens[-1], module)参数如下model:模型sub

2022-04-10 15:22:28 4201

原创 Python:使代码段只执行有限次

debug的时候,有时希望打印某些东西,但是如果代码段刚好在一个循环或者是其他会被执行很多次的部分,那么用来print的语句也会被执行很多次,看起来就不美观。例如:a = 0for i in range(3): a += 1print(a)这里在中间希望确认一下a的类型,debug的时候改成:a = 0for i in range(3): print(type(a)) a += 1print(a)''' 打印结果:<class 'int'><c

2022-03-22 22:26:27 1704 1

原创 Pytorch:在with torch.no_grad()的代码段里临时允许计算梯度

一般情况下,训练神经网络时,pytorch的测试部分语句都会写在 with torch.no_grad() 的代码段下,以关闭tensor的自动求导、计算梯度功能,节省显存和运算时间。但是有时会希望临时允许计算梯度,比如作者是在用pytorch_grad_cam生成神经网络的可解释热图时,它需要通过计算梯度生成,否则会报“element 0 of tensors does not require grad and does not have a grad_fn”的错误。百度没有搜到怎么临时允许计算梯度,

2022-03-22 21:37:47 1563

原创 Pytorch:获得模型每一层的名字

以resnet18模型为例,可以打印出模型的结构:from torchvision import modelsmodel = models.resnet18()print(model)'''打印结果'''# ResNet(# (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)# (bn1): BatchNorm2d(64, eps=1e-05, momentum=0

2022-03-13 17:00:44 4493

原创 Pytorch:ImageFolder只读取部分类别文件夹

直接继承并且重写ImageFolder类的find_classes方法即可from torchvision.datasets.folder import *from typing import *class FilterableImageFolder(ImageFolder): def __init__( self, root: str, transform: Optional[Callable] = None,

2022-03-12 10:20:19 3305 1

原创 使用ImageFolder读取数据集时忽略特定文件

如果事先知道需要忽略哪些文件,当然直接从数据集里删除就行了。但如果需要在程序运行时动态确认,或者筛选规则比较复杂,人工不好做,就需要让ImageFolder在读取时使用自定义的筛选规则。ImageFolder有一个可选参数为is_valid_file,参数类型为可调用的函数,该函数传入一个str参数,返回一个bool值。当返回值为True时保留该文件,否则忽略。例如,读取时想要忽略所有文件名带‘invalid’的文件,代码如下:class Check(object): def __init__

2022-03-11 19:01:45 1574

原创 Photoshop启动时修改暂存盘

解决暂存盘已满导致Photoshop无法启动的问题:按住ctrl+alt键即可

2022-01-06 21:13:21 2487

原创 Word重复操作快捷键F4

使用Word时F4键可以重复上一次的操作,可以用于批量操作。例如,修改一张图像的尺寸之后,选中另一张图像按下F4键,就可以快速修改这张图像为相同尺寸。

2022-01-05 15:26:10 2359

原创 Pytorch训练GoogLeNet时损失函数报错

报错信息:TypeError: cross_entropy_loss(): argument ‘input’ (position 1) must be Tensor, not GoogLeNetOutputs需要把model输出的GoogLeNetOutputs转化为适用于损失函数的logits形式output = model(x)output = output.logits

2021-12-29 15:20:33 4572 3

原创 nohup不输出python命令运行结果到日志文件的可能原因

可能是python没有加-u参数,即应该写成nohup python -u main.py > ./outputs.txt 2>&1 &

2021-12-28 19:08:34 812

原创 Python 判断数组中是否全为某值

使用内置的all函数,函数定义形式:def all(__iterable: Iterable[object]) -> bool使用示例:array = [None, None, None, None]if all(array[i] is None for i in range(len(array))): print('All None')

2021-12-22 15:11:16 1756

原创 Python plt.boxplot箱线图上加直线

2021-12-21 19:09:58 1608

原创 Unity 根据组件名称获得组件(Component)

using System.Reflection;using UnityEngine;using System;public static object GetComponentByName(GameObject targetGameObject, string componentName){ Type componentType = Type.GetType(componentName); object component = targetGameObject.GetCompone

2021-12-05 20:18:29 4035

原创 Python限定参数类型

Python是动态语言,不像C++和Java等静态语言一样需要定义变量的类型。这使得Python使用起来非常方便,但是有的时候会带来代码理解上的问题,并且由于参数类型不确定,编译器没法很好进行代码补全提示。使用 参数名:类型 的语法可以在定义类和方法时像静态语言那样指定参数类型,如:def fun(a: list): return a这样参数a就被指定为了list类型,编译器会在调用时做类型检查,并且后续代码编写的时候可以提供list类型相关的代码补全提示。而Python内置的typi

2021-11-22 19:19:08 6429

原创 pynput识别组合键(最简单的方法)

首先将监听函数设置为打印按键key,获得组合键对应的键码from pynput.keyboard import Listenerdef on_press(key): print(key)with Listener(on_press=on_press) as listener: listener.join()比如ctrl+c就是’\x03’,ctrl+v是’\x16’,注意是有单引号的。然后根据这个键码监听组合键,需要注意的有两点,一个是键码需要保留单引号并且不能转义,一个是

2021-11-20 16:59:23 3071 4

原创 把一维坐标转换为多维坐标

问题:对于一个一维数组的坐标,如何转换为多维矩阵的坐标?举例:对于一维数组坐标35,在尺寸为[5, 4, 3]的多维矩阵中对应的坐标为(2, 3, 2)。验证:35 = 2 × 12 + 3 × 3 + 2看了上面的问题,我们首先应该联想到的是进制转换或者提取整数各位数的问题(实际上后者就是前者在十进制下的特殊场景)。比如,对于尺寸为[2, 2, 2]的矩阵,一维坐标6在多维矩阵中坐标为(1, 1, 0),对应其二进制表示110。而对于尺寸为[10, 10, 10]的矩阵,一维坐标163在多维矩阵中

2021-11-05 15:24:57 618

原创 Python继承 如何在继承父类方法和成员变量的同时不实例化父类

正常情况下,Python继承的写法是这样的:class Human(object): def __init__(self, name): print(f'I am human, my name is {name}.') def eat(self, something): print(f'Eat {something}')class Emperor(Human): def __init__(self, name): super(

2021-10-14 22:01:03 328

原创 ndarray合并维度

比如一个(4,100,224,224,3)的数组想将维度前两个维度合并,变成(400,224,224,3),可以直接new_array = ori_array.reshape([400,224,224,3])为了推广到数组各个维度未知的情况,可以改成new_array = ori_array.reshape([ori_array.shape[0] * ori_array.shape[1]] + list(ori_array.shape[2:]))...

2021-10-05 14:29:50 760

原创 Python魔法方法

忘了在哪里见到的一张归纳图了,mark一下,侵删

2021-09-24 10:20:56 43

原创 Python:Numpy对未知形状的np数组最后几个维度进行操作

做机器学习的时候某个需求不确定输入的形状是类似(224, 224, 3)还是(1000, 224, 224, 3),分别代表了单张图像和一批图像,想对它/它们进行切片只取每一张图像左上角的(112, 112, 3)部分。使用…可以用来代表未知形状数组前面的维度,效果有点类似于索引中的-1,进行倒序处理。代码如下:import numpy as npimg = np.empty([224, 224, 3])img = img[..., :112, :112, :]print(img.shape) #(

2021-09-04 20:28:13 948

原创 keras读取预训练模型统一接口

import numpy as npfrom tensorflow.keras.layers import Flatten, Densefrom keras.models import Modelimport tensorflow.keras.applications as KerasModelsupported_model = np.array([ ['xception', 'Xception'], ['vgg16'

2021-08-25 17:00:25 140

原创 Pytorch加载本地CIFAR10数据集

在线下载经常报错,可以预先下载好数据集放到本地。下载数据集(官网页面:http://www.cs.toronto.edu/~kriz/cifar.html 下载地址:http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz),使用IDM很快就下载完了,不要听某些人瞎忽悠去下载还要积分的资源,百度云也大可不必。把cifar-10-python.tar.gz更名为cifar-10-batches-py.tar.gz并放到本地文件夹里,这里放到./data

2021-08-24 17:43:46 3684 1

原创 Python解方程

sympy库用着稍微有点问题,解简单的方程还行,稍微复杂点的结果就不太行,要么打印出了一堆奇怪的东西,要么会运行失败。自己写了一个解方程的函数,原理是穷尽搜索解的值,代码如下。left和right是把等式两边变成函数,x_range是解的搜索范围,step是搜索步长,error是允许的误差。import numpy as npdef solve_equation(left, right, x_range:list, step:float, error:float): result = []

2021-08-22 20:44:11 646

loosejar-1.2.0.jar

清理java工程中无用.jar包的工具

2020-12-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除