
python
文章平均质量分 68
lqjun0827
一个有梦想的程序员......
展开
-
Gunicorn+Eventlet无法收到SocketIO发送的消息
遇到的emit消息无法发送到客户端的问题,可能由多种配置或兼容性问题导致。1. 确保正确安装依赖库问题原因:未安装eventlet导致 Flask-SocketIO 回退到同步模式,无法处理WebSocket请求。# 安装 eventlet pip install eventlet2. 检查 Gunicorn 启动命令问题原因:未指定eventlet作为 worker class,或 worker 数量过多(WebSocket 通常需单线程)。原创 2025-03-25 16:25:04 · 667 阅读 · 0 评论 -
Numpy数组高级索引
NumPy 切片和索引Numpy高级索引。原创 2024-08-19 10:51:53 · 284 阅读 · 0 评论 -
torch.topk用法
在指定维度选取k个最大(最小)的值。原创 2024-06-19 18:36:06 · 465 阅读 · 0 评论 -
functools.wraps用法
在Python中,是一个装饰器,它的主要作用是将被装饰函数的一些属性值(如__name__、__doc__等)赋值给装饰器中的函数。这个功能主要用于在使用装饰器时保持函数的元数据。原创 2024-03-22 15:19:52 · 689 阅读 · 0 评论 -
functools.partial用法
partial 是 Python 的 functools 模块中的一个非常有用的函数,它用于固定函数的部分参数,并返回一个新的函数对象。这在某些场景下非常有用,尤其是当你需要多次调用一个函数并且其中一些参数保持不变时。原创 2024-03-22 15:06:26 · 522 阅读 · 0 评论 -
Python中的泛型:TypeVar
在Python的类型提示(type hints)中,TypeVar是用于定义类型变量的工具。类型变量在泛型编程中非常有用,它们允许你定义灵活的函数、类或方法,这些函数、类或方法可以在多种类型上操作,而不仅仅是特定的类型。TypeVar 允许你定义一个变量,该变量可以代表任何类型或一组类型。然后,你可以使用这个类型变量来定义函数或类的参数和返回类型。原创 2024-03-22 14:14:15 · 2449 阅读 · 0 评论 -
仿射变换--getAffineTransform和wrapAffine
wrapAffine。原创 2023-12-29 20:08:01 · 748 阅读 · 0 评论 -
np.unravel_index用法
是numpy库中的一个函数,它将一个平面索引或平面索引数组转换为一个坐标数组。原创 2023-12-29 00:01:39 · 1958 阅读 · 0 评论 -
SciPy 库中maximum_filter配合generate_binary_structure获取局部极大值
是 SciPy 库中的一个函数,它用于计算图像的最大值滤波。这个函数在图像处理中经常被用到,特别是在特征提取和边缘检测等任务中。input: 输入的 ndarray。将应用滤波器的输入图像或数据。size: 标量或元组,可选。定义滤波器窗口的大小。如果是一个标量,那么这将是每个维度的大小。如果是一个元组,那么这将指定每个维度的大小。footprint: 布尔数组,可选。定义滤波器的形状,如果提供了 footprint , size 参数将被忽略。output: ndarray ,可选。原创 2023-12-28 23:50:04 · 1367 阅读 · 0 评论 -
functools.reduce函数用法
functools模块中的reduce函数是一个非常有用的函数,它可以将一个接受两个参数的函数以累积的方式从左到右应用到一个序列的元素,从而将序列缩减为一个单一的输出。reducefunction:一个接受两个参数的函数。sequence:一个序列对象。:可选的初始参数¹。reduce函数的工作原理是这样的:首先,如果提供了初始参数,reduce函数会将初始参数和序列的第一个元素作为函数的两个参数进行运算。然后,将得到的结果作为下一次函数运算的第一个参数,序列的下一个元素作为函数的第二个参数进行运算。原创 2023-12-28 04:46:08 · 632 阅读 · 0 评论 -
torch.tensor.gather用法
是PyTorch中的一个函数,它根据索引从输入张量中收集值。原创 2023-12-09 00:46:06 · 730 阅读 · 0 评论 -
Python模块相对导入
在Python中,..和...是相对导入的一部分,用于表示当前模块的上层或上上层目录。原创 2023-12-11 17:16:49 · 495 阅读 · 0 评论 -
Sinkhorn算法
Sinkhorn算法是一种用于解决最优传输问题的迭代算法。最优传输问题是指在给定两个概率分布μ\muμ和ν\nuν的情况下,找到一个最优的转移方案,使得从μ\muμ到ν\nuν的转移成本最小。Sinkhorn算法通过迭代的方式逐步优化转移方案,以达到最优传输的目标。Sinkhorn算法的核心思想是通过交替地更新行和列的缩放因子,来逐步逼近最优转移方案。具体来说,算法的步骤如下:初始化转移方案:首先,我们需要初始化一个转移方案P\mathbf{P}P,其中P\mathbf{P}原创 2023-08-27 11:03:22 · 4387 阅读 · 0 评论 -
模仿学习(Imitation Learning)
Imitation Learning(模仿学习)是一种机器学习方法,通过观察专家(或者已知的行为数据)的行为来学习一个策略,以在类似任务中模仿专家的行为。它的目标是让机器学习从专家的经验中获取知识,从而在未来的任务中表现出类似的行为。专家策略和学习算法。专家策略:专家策略是已经经过训练或者是领域专家提供的一个策略,用来指导模型的学习。专家策略可以是人类专家在该任务上的行为数据,或者是通过其他强化学习算法等方式获得的一组良好的策略。学习算法:学习算法用来从专家的行为数据中学习一个策略模型。原创 2023-08-26 15:25:16 · 2413 阅读 · 0 评论 -
强化学习系列--演员-评论员算法(Actor-Critic Algorithm)
演员-评论员算法(Actor-Critic Algorithm)是一种结合了值函数估计和策略梯度方法的强化学习算法。该算法同时训练一个策略网络(演员)和一个值函数网络(评论员)。演员根据当前策略选择动作,评论员根据当前状态估计值函数,并作为基准线来计算策略梯度的更新。初始化策略网络的参数θ\thetaθ和值函数网络的参数ω\omegaω。对于每个回合:初始化状态sss。根据策略网络,选择动作aaa。执行动作aaa,观察奖励rrr和下一个状态s′s's′。原创 2023-08-25 22:39:46 · 802 阅读 · 1 评论 -
强化学习系列--带基准线的REINFORCE算法
在强化学习中,带基准线的REINFORCE算法是一种用于求解策略梯度的方法。REINFORCE算法(也称为蒙特卡洛策略梯度算法)可以用于训练能够从环境中学习的策略。带基准线的REINFORCE算法是对经典REINFORCE算法的改进,通过引入一个基准线来减小方差,加速学习的过程。REINFORCE算法通过采样轨迹并利用蒙特卡洛方法来估计策略梯度。该算法的目标是最大化期望回报,即最大化累积奖励的期望值。原创 2023-08-25 22:35:14 · 1125 阅读 · 0 评论 -
强化学习系列--深度Q网络(DQN算法)
深度Q网络(Deep Q-Network,DQN)是一种强化学习算法,通过结合深度神经网络和Q-learning算法,用于解决具有高维状态空间的强化学习问题。DQN是由DeepMind提出的,并在解决Atari游戏中取得了显著的成功。在传统的Q-learning算法中,我们使用一个Q表来存储每个状态动作对的动作值函数。然而,当状态空间非常大时,使用Q表变得非常困难,甚至不可行。DQN通过使用一个深度神经网络来逼近动作值函数,解决了这一问题。DQN的核心思想是。原创 2023-08-25 18:40:34 · 883 阅读 · 0 评论 -
强化学习系列--时序差分学习方法(SARSA算法)
SARSA(State-Action-Reward-State-Action)是一种强化学习算法,用于解决马尔可夫决策过程(MDP)中的问题。SARSA算法属于基于值的强化学习算法,用于学习最优策略。在SARSA算法中,智能体通过与环境进行交互来学习。它基于当前状态、选择的动作、获得的奖励、下一个状态和下一个动作来更新价值函数(或者动作值函数),并根据更新后的价值函数选择下一个动作。原创 2023-08-25 17:05:20 · 1099 阅读 · 0 评论 -
强化学习系列--值迭代算法
值迭代算法使用贝尔曼最优方程来更新状态值函数。贝尔曼最优方程表示最优状态值函数的递归关系,一个状态的最优值等于在该状态下采取最优动作后获得的即时奖励加上下一个状态的最优值的折现值。对于一个状态 s,其最优状态值函数 V(s)* 和最优状态-动作值函数 Q(s, a)* 的更新公式如下:其中,P(s’|s, a) 是在状态 s 执行动作 a 后转移到状态 s’ 的概率,R(s, a) 是在状态 s 执行动作 a 后的即时奖励,γ 是折扣因子,用于权衡当前奖励和未来奖励的重要性。原创 2023-08-25 15:01:59 · 593 阅读 · 0 评论 -
torch.where用法
是 PyTorch 中的一个函数,用于根据给定条件从两个张量中选择元素并返回一个新的张量。condition: 一个布尔型的张量,用于指定选择元素的条件。当条件为 True 时,选择x中对应位置的元素,否则选择y中对应位置的元素。x: 一个张量,表示条件为 True 时要选择的元素。y: 一个张量,表示条件为 False 时要选择的元素。返回一个新的张量,根据条件选择x或y中的元素。原创 2023-08-18 11:37:17 · 531 阅读 · 0 评论 -
计算向量或矩阵的范数
函数用于计算向量或矩阵的范数。具体计算公式取决于ord参数的取值。以下是函数中常见的ordord=None或默认值:计算Frobenius范数(矩阵的二范数)。对于向量,Frobenius范数等同于Euclidean范数(L2范数)。。ord=1:计算L1范数。也称为曼哈顿范数(Manhattan norm)或绝对值范数。。。ord=2:计算L2范数。也称为欧几里德范数(Euclidean norm)或向量的长度。。对于矩阵A,L2范数定义为A的奇异值(Singular Values)的最大值。原创 2023-08-13 12:05:39 · 377 阅读 · 0 评论 -
torch.meshgrid用法
是 PyTorch 中的一个函数,用于生成一个二维或三维网格矩阵。该函数接受一系列一维张量作为输入,然后返回一个包含所有输入张量的网格矩阵。函数通常用于生成坐标网格,以便进行网格采样、插值等操作。原创 2023-08-11 22:32:31 · 505 阅读 · 0 评论 -
CentOS安装Python3.9
flask部署环境,最好选择python3.9,因为eventlet和gunicorn目前最高支持python3.9。使用python3.10会报错。原创 2023-06-29 21:22:52 · 386 阅读 · 0 评论 -
小程序使用WebSocket连接Flask后端
在 Flask 中安装 Flask-SocketIO 扩展。原创 2023-05-20 23:33:22 · 1111 阅读 · 3 评论 -
python日志记录
python使用flask后端开发,如何记录日志?要求按日期生成日志文件,并自动删除30天之前的日志文件,并且在其他文件可以很容易使用logger。原创 2023-05-18 00:45:35 · 451 阅读 · 1 评论