Python蜂窝通信Wi-Fi和GPU变分推理及暴力哈希加密协议图消息算法

news2024/9/21 16:46:42

🎯要点

🎯图模型和消息传递推理算法 | 🎯消息传递推理和循环消息传递推理算法 | 🎯空间人工智能算法多维姿势估计 | 🎯超图结构解码算法量子计算 | 🎯GPU处理变分推理消息传递贝叶斯网络算法 | 🎯高斯消息传递数学形式和算法代码 | 🎯蜂窝通信Wi-Fi大量数据传输和存储信道编码解码算法 | 🎯图消息传递推理算法暴力哈希加密协议

📜消息传递推理算法用例

📜Python精神病算法和自我认知异类数学模型

🍪语言内容分比

在这里插入图片描述
在这里插入图片描述

🍇Python图消息数学

和积消息传递是一种有效应用概率的和规则和乘积规则来计算不同分布的算法。例如,如果离散概率分布 p ( h 1 , v 1 , h 2 , v 2 ) p\left(h_1, v_1, h_2, v_2\right) p(h1,v1,h2,v2) 可以分解为
p ( h 1 , h 2 , v 1 , v 2 ) = p ( h 1 ) p ( h 2 ∣ h 1 ) p ( v 1 ∣ h 1 ) p ( v 2 ∣ h 2 ) p\left(h_1, h_2, v_1, v_2\right)=p\left(h_1\right) p\left(h_2 \mid h_1\right) p\left(v_1 \mid h_1\right) p\left(v_2 \mid h_2\right) p(h1,h2,v1,v2)=p(h1)p(h2h1)p(v1h1)p(v2h2)
我可以通过将各项相乘并对其他变量求和来计算边际,例如 p ( v 1 ) p\left(v_1\right) p(v1)
p ( v 1 ) = ∑ h 1 , h 2 , v 2 p ( h 1 ) p ( h 2 ∣ h 1 ) p ( v 1 ∣ h 1 ) p ( v 2 ∣ h 2 ) p\left(v_1\right)=\sum_{h_1, h_2, v_2} p\left(h_1\right) p\left(h_2 \mid h_1\right) p\left(v_1 \mid h_1\right) p\left(v_2 \mid h_2\right) p(v1)=h1,h2,v2p(h1)p(h2h1)p(v1h1)p(v2h2)
有了边际,我们就可以计算 p ( v 1 ) p\left(v_1\right) p(v1) p ( v 1 , v 2 ) p\left(v_1, v_2\right) p(v1,v2) 等分布,这意味着我们还可以计算像 p ( v 2 ∣ v 1 ) p\left(v_2 \mid v_1\right) p(v2v1)​的项。置信传播提供了一种计算这些边际的有效方法。

在此,我将使用有向图形模型对其进行编码。

import numpy as np
from collections import namedtuple

离散条件分布 p ( v 1 ∣ h 1 ) p\left(v_1 \mid h_1\right) p(v1h1) 可以表示为具有两个轴的数组,例如

h 1 = a h 1 = b h 1 = c v 1 = 0 0.4 0.8 0.9 v 1 = 1 0.6 0.2 0.1 h_1= a h_1= b h_1= c\\ \begin{array}{llll} v_1=0 & 0.4 & 0.8 & 0.9 \\ v_1=1 & 0.6 & 0.2 & 0.1 \end{array} h1=ah1=bh1=cv1=0v1=10.40.60.80.20.90.1
对每个变量使用一个轴可以推广到更多变量。例如,5 变量 p ( h 5 ∣ h 4 , h 3 , h 2 , h 1 ) p\left(h_5 \mid h_4, h_3, h_2, h_1\right) p(h5h4,h3,h2,h1) 可以用具有五个轴的数组表示。

LabeledArray = namedtuple('LabeledArray', [
    'array',
    'axes_labels',
])

def name_to_axis_mapping(labeled_array):
    return {
        name: axis
        for axis, name in enumerate(labeled_array.axes_labels)
    }

def other_axes_from_labeled_axes(labeled_array, axis_label):
    return tuple(
        axis
        for axis, name in enumerate(labeled_array.axes_labels)
        if name != axis_label
    )

要检查多维数组是否为联合分布,整个数组的总和应该为一。要检查二维数组是否为条件分布,当所有右侧变量都已分配后,例如 p ( v 1 ∣ h 1 = a ) p\left(v_1 \mid h_1=a\right) p(v1h1=a),所得向量表示分布。该向量的长度应为 v 1 v_1 v1 的状态数,并且总和应为 1。在 numpy 中计算此值涉及沿与 v 1 v_1 v1 变量对应的轴求和。

再次将条件分布数组推广到多维示例,当所有右侧变量都已分配时,例如

p ( h 5 ∣ h 4 = a , h 3 = b , h 2 = a , h 1 = a ) p\left(h_5 \mid h_4=a, h_3=b, h_2=a, h_1= a\right) p(h5h4=a,h3=b,h2=a,h1=a),所得向量表示分布。该向量的长度应为 h 1 h_1 h1​ 的状态数,且总和应为 1。

def is_conditional_prob(labeled_array, var_name):
    return np.all(np.isclose(np.sum(
        labeled_array.array,
        axis=name_to_axis_mapping(labeled_array)[var_name]
    ), 1.0))
    
def is_joint_prob(labeled_array):
    return np.all(np.isclose(np.sum(labeled_array.array), 1.0))
p_v1_given_h1 = LabeledArray(np.array([[0.4, 0.8, 0.9], [0.6, 0.2, 0.1]]), ['v1', 'h1'])
p_h1 = LabeledArray(np.array([0.6, 0.3, 0.1]), ['h1'])
p_v1_given_many = LabeledArray(np.array(
    [[[0.9, 0.2], [0.3, 0.2]],
     [[0.1, 0.8], [0.7, 0.8]]]
), ['v1', 'h1', 'h2'])

assert is_conditional_prob(p_v1_given_h1, 'v1')
assert not is_joint_prob(p_v1_given_h1)

assert is_conditional_prob(p_h1, 'h1')
assert is_joint_prob(p_h1)

assert is_conditional_prob(p_v1_given_many, 'v1')
assert not is_joint_prob(p_v1_given_many)

在信念传播中,我还需要计算分布的乘积,例如 p ( h 2 ∣ h 1 ) p ( h 1 ) p\left(h_2\mid h_1\right) p\left(h_1\right) p(h2h1)p(h1)

在此,我只需要将多维数组乘以一维数组,偶尔乘以标量。我最终实现这一点的方法是将一维数组的轴与其他分布的相应轴对齐。然后我将一维数组平铺为 p ( h 2 ∣ h 1 ) p\left(h_2 \mid h_1\right) p(h2h1) 的大小。这给出了联合分布 p ( h 1 , h 2 ) p\left(h_1, h_2\right) p(h1,h2)

def tile_to_shape_along_axis(arr, target_shape, target_axis):

    raw_axes = list(range(len(target_shape)))
    tile_dimensions = [target_shape[a] for a in raw_axes if a != target_axis]
    if len(arr.shape) == 0:

        tile_dimensions += [target_shape[target_axis]]
    elif len(arr.shape) == 1:

        assert arr.shape[0] == target_shape[target_axis]
        tile_dimensions += [1]
    else:
        raise NotImplementedError()
    tiled = np.tile(arr, tile_dimensions)

    shifted_axes = raw_axes[:target_axis] + [raw_axes[-1]] + raw_axes[target_axis:-1]
    transposed = np.transpose(tiled, shifted_axes)

    assert transposed.shape == target_shape
    return transposed

def tile_to_other_dist_along_axis_name(tiling_labeled_array, target_array):
    assert len(tiling_labeled_array.axes_labels) == 1
    target_axis_label = tiling_labeled_array.axes_labels[0]
    
    return LabeledArray(
        tile_to_shape_along_axis(
            tiling_labeled_array.array,
            target_array.array.shape,
            name_to_axis_mapping(target_array)[target_axis_label]
        ),
        axes_labels=target_array.axes_labels
    )
tiled_p_h1 = tile_to_other_dist_along_axis_name(p_h1, p_v1_given_h1)
assert np.isclose(np.sum(p_v1_given_h1.array * tiled_p_h1.array), 1.0)

图结构

P_h1
h1
P_h2/h1
h2
P_V2/h2
V2
P_V1/h1
V1

该算法将计算从因子 f f f 到变量 x x x 的消息,表示为 μ f → x ( x ) \mu_{f \rightarrow x}(x) μfx(x)。它还将计算从变量 x x x 到因子 f , μ x → f ( x ) f, \mu_{x \rightarrow f}(x) f,μxf(x) 的值。正如图算法中常见的那样,它们是递归定义的。

变量到因子的消息由以下公式给出:
μ x → f ( x ) = ∏ g ∈ { n e ( x ) \ f } μ g → x ( x ) \mu_{x \rightarrow f}(x)=\prod_{g \in\{n e(x) \backslash f\}} \mu_{g \rightarrow x}(x) μxf(x)=g{ne(x)\f}μgx(x)
其中 n e ( x ) n e(x) ne(x) x x x 的邻居。

def _variable_to_factor_messages(variable, factor):
    incoming_messages = [
        _factor_to_variable_message(neighbor_factor, variable)
        for neighbor_factor in variable.neighbors
        if neighbor_factor.name != factor.name
    ]
    return np.prod(incoming_messages, axis=0)

👉参阅、更新:计算思维 | 亚图跨际

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

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

相关文章

5G-A通感融合赋能低空经济-RedCap芯片在无人机中的应用

1. 引言 随着低空经济的迅速崛起,无人机在物流、巡检、农业等多个领域的应用日益广泛。低空飞行器的高效、安全通信成为制约低空经济发展的关键技术瓶颈。5G-A通感一体化技术通过整合通信与感知功能,为低空网络提供了强大的技术支持。本文探讨了5G-A通感…

【中国近代史】林则徐虎门销烟(1839年)

中国古代朝代历史经过两周时间(7.03-7.13)的分享已经正式结束,首先感谢大家通过那个专栏点赞收藏关注我,这是我继续创作的动力。 接下来新的专栏就是中国近代史。让我们再次走入近代史的潮流中,去学习去感受先辈们的拼…

计组_多处理器的基本概念

2024.06.26:计算机组成原理多处理器的基本概念学习笔记 第21节 多处理器的基本概念 1. 计算机体系结构1.1 SISD单指令流单数据流(前面几章一直在学习的内容)1.2 SIMD单指令流多数据流1.2.1 改进:向量处理器 1.3 MISD多指令流单数据…

应用帕累托原则学习新的编程语言

在本文中,我将讨论如何应用帕累托原则快速学习一门新的编程语言,并在加深对编程语言的理解的同时开始解决实际问题。 什么是帕累托原则? 帕累托原则,又称 80/20 法则,指出对于许多结果而言,大约 80% 的后…

数据湖仓一体(一) 编译hudi

目录 一、大数据组件版本信息 二、数据湖仓架构 三、数据湖仓组件部署规划 四、编译hudi 一、大数据组件版本信息 hudi-0.14.1zookeeper-3.5.7seatunnel-2.3.4kafka_2.12-3.5.2hadoop-3.3.5mysql-5.7.28apache-hive-3.1.3spark-3.3.1flink-1.17.2apache-dolphinscheduler-3.1.9…

我的智能辅助大师-办公小浣熊

一、基本介绍 随着2022年ChatGPT为代表的AI工具对互联网领域进行第一次冲击后,作为一名对编程领域涉足不算特别深的一名程序员,对AI大模型的接触也真的不能算少了,这是时代的必然趋势。在此之前也曾接触过很多的AI工具,他们都能在…

跨境电商系统如何进行搭建

目前越来越多的商家,他们都在进行跨境电商建站,便于自己在网络上进行营销推广,跨境电商系统的搭建是至关重要的,商家应该先了解跨境电商的模式有哪些,这样才能对跨境电商系统有更好的搭建结果。 跨境电商模式 目前来…

1589. 【中山市第十二届义务教育段学生信息学邀请赛】象战(bishop)(Standard IO)

题目描述 国际象棋的棋盘可以表示为一个 8 行 8 列的格子图,其中每个格子都可以放一枚棋子。我们将第 1 行第 2 列的格子用 (1,2) 来表示,以此类推。 为了帮助妹妹认识国际象棋中的“象”这种棋子,Jimmy 可谓是煞费苦心——他首先教会妹妹&…

【Java】数据类型及类型转换

数据类型 Java语言的数据类型分为两大类: 基础数据类型引用数据类型 基础数据类型 基础数据类型包括以下8种: 类型名称关键字占用内存取值范围区间描述字节型byte1 字节-128~127-27~27-1短整型short2 字节-32768~32767-215~215-1整型int4 字节-2147…

算法学习笔记(8.3)-(0-1背包问题)

目录 最常见的0-1背包问题: 第一步:思考每轮的决策,定义状态,从而得到dp表 第二步:找出最优子结构,进而推导出状态转移方程 第三步:确定边界条件和状态转移顺序 方法一:暴力搜素…

经典元启发式算法的适用范围及基本思想

元启发式算法是针对优化问题设计的一类高级算法,它们具有广泛的适用性,可以解决不同类型的问题。不同的元启发式算法由于其特定的搜索机制和策略,适用的优化问题类型也有所不同。以下是一些常见元启发式算法及其适用范围: 1. 遗传…

OrangePi AIpro 浅上手及搭建卡通图像生成多元化AI服务

前言 很高兴,收到了一份新款 OrangePi AIpro 开发板,这是香橙派第一次与华为昇腾合作,使用昇腾系列 AI 处理器来设计这款高性价比的 AI 开发板。这块开发板不仅性能强大,还支持丰富的硬件接口,为AI开发者提供了一个理…

Nginx的访问限制与访问控制

访问限制 访问限制是一种防止恶意访问的常用手段,可以指定同一IP地址在固定时间内的访问次数,或者指定同一IP地址在固定时间内建立连接的次数,若超过网站指定的次数访问将不成功。 请求频率限制配置 请求频率限制是限制客户端固定时间内发…

代码随想录第十二天|226.翻转二叉树、 101.对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

文章目录 226.翻转二叉树思路解法一、前序遍历递归解法二、深度优先搜索--迭代 101.对称二叉树思路解法一、递归解法二、迭代 104.二叉树的最大深度解法一、深度优先搜索--递归解法二、广度优先搜索--迭代 111.二叉树的最小深度解法一、深度优先搜索--递归解法二、广度优先搜索…

制作显卡版docker并配置TensorTR环境

感谢阅读 相关概念docker准备下载一个自己电脑cuda匹配的docker镜像拉取以及启动镜像安装cudaTensorRT部署教程 相关概念 TensorRT是可以在NVIDIA各种GPU硬件平台下运行的一个模型推理框架,支持C和Python推理。即我们利用Pytorch,Tensorflow或者其它框架…

2、matlab打开显示保存点云文件(.ply/.pcd)以及经典点云模型数据

1、点云数据简介 点云数据是三维空间中由大量二维点坐标组成的数据集合。每个点代表空间中的一个坐标点,可以包含有关该点的颜色、法向量、强度值等额外信息。点云数据可以通过激光扫描、结构光扫描、摄像机捕捉等方式获取,广泛应用于计算机视觉、机器人…

常用控件(六)

布局管理器 布局管理器垂直布局QHBoxLayoutQGridLayoutQFormLayoutQSpacerItem 布局管理器 之前使⽤ Qt 在界⾯上创建的控件, 都是通过 “绝对定位” 的⽅式来设定的. 也就是每个控件所在的位置, 都需要计算坐标, 最终通过 setGeometry 或者 move ⽅式摆放过去.这种设定⽅式其…

JAVA NIO组件之Buffer详解

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

标签-镜像拉取策略-重启策略-pod优雅终止-pod中容器资源限制-容器类型-容器守护进程-日志排错-容器命令exec-cp

一.标签 1.概述&#xff1a; 标签是附加到kubernets对象&#xff08;比如pod&#xff09;上的键值对&#xff0c;标签可以在创建时附加到对象&#xff0c;随后也可以随时添加修改&#xff1b;标签不支持唯一性。 在k8s中大多数资源都是通过标签进行关联的&#xff08;如pod与s…

管理Linux本地用户和组

什么是用户 用户账户在可以运行命令的不同人员和程序之间提供安全界限。 在Linux系统中&#xff0c;系统通过分配唯一的标识号&#xff08;用户ID或UID&#xff09;来区分不同的用户帐户。 在Linux系统中&#xff0c;用户帐户有以下三种主要类型&#xff1a; 超级用户 负责…