【文末福利】我用英飞凌的PSoC™ 62搞了点智能家居的创意

news2024/11/28 8:47:22

【英飞凌创意创客大赛】基于Infineon和ChatGPT的人工智能语音小管家

概要

本文给大家介绍一个Infineon和ChatGPT的人工智能语音小管家项目,该项目是博主架构师李肯参加由RT-Thread与英飞凌联合举办的2023英飞凌创意创客大赛的参赛项目,旨在探索智能硬件+智能音箱+ChatGPT的超级组合在C端市场的潜在应用,希望能给大家带来帮助和启发。

文章目录

  • 【英飞凌创意创客大赛】基于Infineon和ChatGPT的人工智能语音小管家
  • 1 前言
  • 2 项目简介
    • 2.1 项目名称
    • 2.2 设计思路
    • 2.3 主要解决的问题
    • 2.4 项目创新点
    • 2.5 本次参赛的初衷
  • 3 系统架构介绍
    • 3.1 方案预研
    • 3.2 系统核心架构图
    • 3.3 终端侧
    • 3.4 后端侧
    • 3.5 移动端
  • 4 系统设计说明
    • 4.1 硬件部分
    • 4.2 软件部分
    • 4.3 创新性的开发环境
  • 5 项目实施过程
  • 6 项目效果显示
    • 6.1 功能描述
    • 6.2 图片展示
    • 6.3 视频展示
    • 6.4 代码开源
  • 7 项目复盘
  • 8 致谢
  • 9 项目的TODOLIST
  • 10 参考链接
  • 11 更多分享
  • 12 文末福利

1 前言

如今,智能化的设备慢慢走进了千家万户,大大提升了人民生活的智能化,但是随之而来的是各种智能设备无法互联互通,形成了一片片信息孤岛,这就迫切需要一个类似于智能家居管家系统的中枢设备来接管这些零散的智能设备;而在各种成熟的应用产品方案中,形态各异的智能音箱无疑是一个比较合适的选择。

众观市场上的各种智能音响,小度音响凭借其优异的市场表现,占据了很大一块市场份额,使得“小度小度,现在几度”成为了家庭中很常见的交互问候语。

有这么一个设想,我们将家庭环境中形态各异的智能设备,通过简单的协议改造,加上终端设备出色的主控能力,智能设备全部集合到小度音箱中去,而这个终端系统与小度音响直接打通,这样跟小度直接对话就能操作这些智能设备,这是一个不错的点子。

同时,当下人工智能非常火爆,尤其以ChatGPT最为强大,倘若这样的一套终端系统能够接入最前沿的ChatgPT,那么可以想象的是,这个智能系统的可玩性将会大大提升,而本项目正是基于这样的目的,着手去探讨这样方案的可行性。

2 项目简介

2.1 项目名称

基于Infineon和ChatGPT的人工智能语音小管家

2.2 设计思路

本项目主要使用Infineon的控制芯片作为端侧的核心控制器,实现一个物联网网关,网关外围接入多种传感器器件和控制器件,通过Wi-Fi模组实现与云端的互通,并接入小度音箱控制系统,实现使用音箱控制智能设备。

这个项目中,我将引入试下最流行的人工智能模型ChatGPT,这将极大地提升智能管家的时髦性和可玩性。本项目着重定义的应用场景是在智慧家庭中,一个有趣的人工智能小管家,不仅能够给家庭智能带来便利,还将提升家居生活的智能化和幸福感。解放双手,释放人类,享受智能生活,一切都将变得可能。

2.3 主要解决的问题

家庭中的智能设备越来越多,一个集中式的智能家庭中枢控制系统迫在眉睫,旨在解决所有智能设备的调度和控制问题,为智能生活提供便利。同时,将智能音箱系统接入最前沿的ChatGPT技术,丰富设备的可玩性。

2.4 项目创新点

  • 主要是设备端各项传感器器件和控制器件的集成,以及与小度音响的直连互通。
  • 在智能家居中,目前主流的所谓的“智能”,都是一个比较粗狂的智能,比如小度、小爱同学等;真正如果做到引入人工智能这种层次,还得看ChatGPT;如果能讲ChatGPT接入智能家庭这个场景中,那么可玩的的东西,想象力就可大了。

2.5 本次参赛的初衷

采用本项目参赛,本身并不期望作出多么惊艳的产品,旨在探索智能硬件+智能音箱+ChatGPT的超级组合在C端市场的潜在应用,希望能给大家带来帮助和启发。

3 系统架构介绍

3.1 方案预研

在过往的项目经历中,我已实现过 基于小度音箱的智能家庭中枢控制系统,参见 这里; 这个方案已经证实了,小度音箱作为控制中枢的可行性,现在只不过把控制中枢的逻辑移植过来。

剩下的就是小度音箱与ChatGPT的衔接问题,从查到的资料可知,在 DuerOS开放平台 (baidu.com) 的开放资料可知,小度音箱支持自定义 技能, 而通过这个技能,我们可以实现捕捉到从小度音箱获取的用户语音输入信息,这个时候需要利用到 DuerOS SDK 的API能力, 将语音的输入转换成文本信息,进而转发到了用户自定义的处理服务器,再由这个服务器将文本信息通过ChatGPT的Open API能力,得到反馈的信息(经ChatGPT处理得到的信息),再通过DuerOS SDK的API,通过小度音箱将信息输出,形成一个操作闭环。

同时,这个自定义的服务器还可以将与ChatGPT交互的信息,以MQTT Publish的形式推送到智能终端,达到保存信息记录的目的。

在预研的过程中,有参考一篇博文,给我一定的指导意义,详见 这里。

经过以上分析,得到了方案的可行性,下面开始着手设计系统架构图。

3.2 系统核心架构图

经过调研设计,得到整个系统的核心架构图如下所示:

小度智能家庭+chatgpt系统架构图 (1)

从上面这个核心架构图中,我们可以看到整个IoT系统组成,包括智能设备终端侧、巴法云物联网平台、小度云平台、小度音箱、OpenAI-ChatGPT后台,自定义后台服务(负责对接小度云平台)等等。下面就整个系统的几大重要组件,我会一一进行简要讲解。

3.3 终端侧

终端侧主要承载的是对巴法云平台的对接,接收巴法云平台下发的控制指令和ChatGPT交互数据,同时做一些边缘侧的应用逻辑处理,还需要具备对外网络的通讯能力,保持与巴法云平台的MQTT长链接。

这里巴法云平台推送的数据主要有两类:

  • 对外围的智能设备的操作之类,比如关灯/开灯;
  • 还有一类就是小度音箱与ChatGPT的交互记录数据。

终端侧包括的核心组件有:英飞凌的PSoC™ 62 with CAPSENSE™ evaluation kit,搭载的是国产实时操作系统 RT-Thread,同时外设板载有 ESP8266 Wi-Fi通讯模组、继电器(GPIO模拟)、存储的SD卡等等。

终端侧不仅包含设备硬件,还需要对应的固件软件,两者相辅相成,共同完成终端侧的功能逻辑。

image-20230715190530271

3.4 后端侧

后端侧包括两部分:

巴法云平台

这个后端侧,其实没有真正的开发工作,仅仅是登录巴法云平台后台,配置MQTT板块,然后生成【智能灯】两个设备,以便于终端侧和小度音响识别。

同时,巴法云的MQTT后台,还需要配置一个专门用于传输ChatGPT交互数据的topic通道,以便于终端与自定义服务器进行数据传输。

image-20230715220734624

自定义服务器

这个后端侧是有一定的开发工作量,包括以下几个核心内容:

  • 移植DuerOS SDK,调用其API,通过小度技能的Callback能力,将从小度音箱输入的语音转文本信息取得;
  • 基于OpenAI 的API KEY 能力,编写逻辑程序,讲文本信息发往ChatGPT服务,并获得ChatGPT的响应数据;
  • 再通过DuerOS SDK 的API,把ChatGPT的响应数据转为语音,再通过小度音箱播放出来。

值得注意的是,这部分涉及的后端知识比较多,对多个SDK的研究还需要投入更多的时间和精力

3.5 移动端

这里说的移动端,特指小度APP;其实这里面也没有开发工作,当你的小度APP账号登录之后,它有一个操作步骤可以加入基于巴法云平台的【智能设备】,按照说明添加成功后,就可以在小度APP上看到巴法云平台对应的设备列表了。

详细的绑定操作步骤,见 此文的第二部分。

image-20230301004858379

4 系统设计说明

4.1 硬件部分

  • MCU主控:英飞凌的PSoC™ 62

Infineon Technologies 的 PSoC 62S2 评估套件 (CY8CEVAL-062S2) 使客户能够使用 PSoC 62 MCU 评估和开发应用。该套件采用 PSoC 62 MCU (CY8C624ABZI-S2D44):150 MHz Arm® Cortex®-M4 和 100 MHz Arm Cortex-M0+内核、2 MB 闪存、1 MB SRAM、硬件加密加速器、丰富的模拟和数字外设、音频和通信接口,以及采用 CAPSENSE™ 技术的行业领先电容式感应。PSoC 62S2 评估套件提供了许多开箱即用的用例,用于开发即将推出的连接边缘节点。

它的具体接口资源展示如下:

image-20230715221709874

在我的项目中,我主要使用它的以下几个外设资源:

1)UART6:RT-Thread的终端调试串口;

2)UART5:用于连接串口WI-Fi模块ESP8266,实现网络通讯能力;

3)GPIO:P0.0 用作系统工作状态显示灯,P0.1 用于控制智能灯开关(模拟);

4)SDIO:外挂SD卡,用于存储ChatGPT的交互信息。

以下是我的实物连接示意图:

image-20230715224526150

  • Wi-Fi模组:ESP8266

本次参赛,我采用了我惯用的Wi-Fi通讯模组ESP8266,非常的便捷,借助RT-Thread的软件包,基本无需编写任何代码,就可以实现网络能力;当然串口通讯还是需要配置一下,只不过不用谢代码而已。

我这里使用的搭建ESP8266 Wi-Fi芯片的模组ESP-12F,它是由安信可科技开发的,该模块核心处理器 ESP8266 在较小尺寸封装中集成了 业界领先的 Tensilica L106 超低功耗 32 位微型 MCU,带有 16 位精简模式,主频支持 80 MHz 和 160 MHz,支持 RTOS,集成 Wi-Fi MAC/ BB/RF/PA/LNA,板载天线。

ESP8266

  • GPIO控制

目前这一块的接入,采用的是GPIO做模拟,并没有实际接入继电器,但已经完全可以实现其操作原理。

其中,P0.0 用作系统工作状态显示灯(每一秒闪烁一次),P0.1 用于控制智能灯开关(模拟)。

如上上图所示。

4.2 软件部分

整个软件部分的开发主要分为两大部分:终端软件和后端服务器软件

终端固件开发

主要包括四大部分:英飞凌的PSoC™ 62的原厂BSP、RT-Thread实时操作系统、ESP8266相关的配置代码使能、个性化的应用逻辑代码。

其中英飞凌的PSoC™ 62的原厂BSP基本不动,原厂和相关开发者已经适配好了;通用的RT-Thread操作系统的代码也不在此处的修改中,直接复用已有的代码,这里使用的版本是 5.0.0版本 。

ESP8266相关的AT、网络组件代码也是现成的,使能配置之后就可以直接用了,还是非常的方便。

除了AT相关的软件包代码外,我还使用了 paho-mqtt 这个软件包,这个软件包主要封装了MQTT协议的实现技术细节,开放了一些灵活好用的API给到应用层,以便于提供MQTT的通讯能力。

还有一个cJSON的软件包,这里也使用到了,它用于做一些上下行数据包的解析和封装,主要原因是需要解析一些与云平台对接的数据协议,这就要求终端必须具备解析JSON数据的能力。

所以这里重点讲一下,应用逻辑的代码:主要包括GPIO的控制等,而这些控制信号的输入,都是来源于巴法云平台的下发,而巴法云平台的联动下发则来源于用户对小度音响的语音控制输入。

另一方面,当终端收到来自ChatGPT交互日志的请求数据时,也会将该数据写入SD卡作为存储。

以下是终端软件应用逻辑部分的层次图:

image-20230715225537050

其中:

Wi-Fi线程:由于在RT-Thread中AT组件是开启后,默认就跑起来了,而在应用层暂时没有一个比较好的方式感知网络能力的建立,所以这里新建了一个线程,用于实时检查网络通讯能力;当网络通讯能力已建立时,通过信号量的方式,通知其他模块。

Smart Home (+ ChatGPT) MQTT线程:主要负责跟巴法云物联网平台进行对接,采用的MQTT通讯协议,它的运行,依赖于基础网络能力的建立;当它与巴法云物联网平台建立联系时,它就可以接收平台的控制指令下发,比如开关空调或开关照明灯等;

系统运行展示线程:此线程并没有参与过多的应用逻辑,仅仅是每一秒钟闪烁一下运行指示灯,表示系统正在运行中;

智能灯(模拟)控制模块:一个LED模拟继电器控制智能灯的逻辑,当收到下发的打开或关闭指令时,执行对灯的操控;

SD卡存储显示:此线程主要用于存储小度音箱与ChatGPT的交互信息。

以上各个线程各司其职,相辅相成,共同完成智能家庭中枢控制系统的逻辑功能。

下面展示的是工程项目中的代码结构,里面的代码结构一本与上面的代码逻辑示意图保持一致。

image-20230715231042087

后端代码开发

由于时间关系比较紧张,还未完全学透DuerOS SDK与小度音箱的衔接,以下是部分参考代码,还需要进一步学习:

javascriptCopy code
const sdk = require('baidu-sdk');
const OpenAI = require('openai');

const openai = new OpenAI('<your_api_key>');

sdk.onVoice((data) => {
  const text = data.result.recognize[0].payload.result.word[0];
  openai.generate(text).then((response) => {
    sdk.sendText(response.data[0].text);
  });
});

关于应用OpenAI 的API KEY 构建ChatGPT能力,倒不是一个难事,使用python脚本即可实现,范例代码如下:

import openai

#my_gpt_key = "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"
#my_gpt_key = "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"
#my_gpt_key = "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"
#my_gpt_key = "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"
#my_gpt_key = "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"
my_gpt_key = "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"

import time

def ask_gpt(text: str):    
    #openai.api_type = "azure"
    #openai.api_key = "..."
    #openai.api_base = "https://example-endpoint.openai.azure.com"
    #openai.api_version = "2022-12-01"
    openai.api_key = my_gpt_key # "PUT YOUR API KEY HERE"
    # 获取当前时间
    t1 = int(time.time())
    
    # list engines
    #engines = openai.Engine.list()
    # print the first engine's id
    #print(engines.data[0].id)
    res = openai.Completion.create(
        engine="text-davinci-003", prompt=text, temperature=0.6, max_tokens=2048
    )
    t2 = int(time.time())
    print(t2 - t1)
    return res.choices[0].text
 
def main():
    while True:
        query = input("Ask a question: ")
        res = ask_gpt(query)
        print(f"{res}\n")
 
main()

4.3 创新性的开发环境

由于我早期基于RT-Thread做开发,也是非常依赖于RT-Thread Studio开发环境,虽然提供了一些便利,但是碍于它的配置实在是太慢了,并且非常吃内存和吃存储空间,于是被我启用了。

也正是由于这些吃瘪,我自己经过设计,延续了scons+env的构建环境,打造了一套属于自己的开发环境,我取名叫 xiotman

关于它的介绍,详见我的开源项目:xiotman: 一套致力于解决物联网终端应用多样化挑战的软件架构解决方案。 (gitee.com)

image-20230602232120443

借助这个项目,我很方便就把我本次参赛的项目移植移植进来了:

image-20230715230302202

基于scons+env的构建编译,也是非常的丝滑,多线程编程,想想就开心:

image-20230715230816590

在烧录固件这块,我没有使用RT-Studio的下载工具,而是使用了原厂提供的 Cypress Programmer 4.2,烧录工具用起来还是很爽的,尤其是自带烧录器这个实用功能,必须点个赞。

image-20230715230643738

5 项目实施过程

1)熟悉英飞凌的PSoC™ 62的基本开发资料

这一步主要是熟悉开发板的基本资源,对外设等信息有一定的概念,以便于方便后续的开发调试;同时,还需要把相关的一些官方软件给安装好,熟练使用配置工具和下载工具。

参加大赛主办发举行的一些线上直播活动,了解必要的开发基础。

磨刀不误砍柴工,只要熟练上手了,才能开发出优秀的应用程序。

2)移植RT-Thread操作系统

本次参赛,其实并不要求去移植RT-Thread,其实也要多感谢RT-Thread官方和社区的小伙伴,其实他们都已经做好了基本的移植了,只需要对照着自己的开发板资源跳调整一下即可。

有了上面的踩坑经验,直接上手RT-Thread的DEMO教程,很快就可以把操作系统跑起来了,一切都回归到熟悉的地方,研发进度再次提速。

下面就是基于RT-Thread操作系统进行编程了。

3)配置RT-Thread的软件包

目前由于xiotman的在线更新软件包的功能还没完全打通,所以我是通过在原生rt-thread/bsp目录,使用env配置工具先把软件包下载下来,然后手动拷贝到xiotman的components/packages/对应的目录。

这个项目中,我使用了paho-matt软件包、AT-device软件包、CJSON软件包;的确让我的项目开发提速了不少。

image-20230715231139567

4)配置巴法云物联网平台

我是参考这个 esp8266接入小度语音,小度音箱控制 来创建自己的自定义产品的,并实现与小度音箱的绑定的。

基本上以上4步完成后,终端就可以很顺利地连上巴法云物联网平台了,而这期间基本就是零代码,全部都归功于RT-Thread灵活的代码配置工具,非常地赞。

image-20230715231340585

5)调试外设驱动

这里主要是调试各种驱动接口,包括红外发射器的UART接口、照明灯开关的GPIO控制。

在调试过程中,一般一个个模块来,避免模块直接的干扰,这样可以有效地加快开发速度。

等到各个功能模块完成后,统一串起来跑一跑,确保没有问题。

6)全功能自测

到了这一步,基本功能开发就已经完成了,需要将终端设备的功能与云端能力联系起来调试,比如对小度音箱进行控制语音输入,看一下巴法云平台能否推送对应的控制消息下来,同时看下终端能否对控制消息进行合理的处理,比如控制空调开关或者控制照明开关等。

但是由于对接ChatGPT的后端服务器程序还未完工,所以涉及ChatGPT部分的逻辑,还需要再等一等,是一个遗憾。

7)准备结项资料

项目收尾的最后,需要准备各种结项资料,包括项目稳定、演示视频、各种实物图片等等。

6 项目效果显示

6.1 功能描述

本期项目中,已实现以下功能:

  • 在巴法云后台配置智能设备:智能空调和智能灯,在小度APP是可以看到设备情况;
  • 基于英飞凌的PSoC™ 62的终端,实现智能家庭中枢控制系统的功能;
  • 跟小度音响语音对话,比如【打开灯】或【关闭灯】,即可实现控制指令下发,终端通过GPIO控制LED(模拟真实场景的智能灯)
  • 打通本地空调状态和智能灯状态与巴法云、小度平台的联系,实现实时控制联动。

还未实现的功能

  • 打通小度音箱与自定义后端服务器,完成语音输入的提取和转发
  • 对接OpenAI,基于API KEY 实现ChatGPT的功能

6.2 图片展示

以下是项目的部分图片展示:

  • 项目应用启动/调试log

image-20230715231751648.png

image-20230715231840831

  • 小度APP使用界面

image-20230301010625080

  • 通过巴法云添加的智能设备在小度APP的展示

image-20230301010702885

6.3 视频展示

B站视频(演示小度音箱的智能控制):【英飞凌创意创客大赛】基于Infineon和ChatGPT的人工智能语音小管家】

因时间关系,基于ChatGPT的智能逻辑还没完全实现,演示视频待下次补充。。。

6.4 代码开源

本参赛项目的源代码已全面开源在 这里

其中应用部分的代码在 https://gitee.com/recan-li/xiotman/tree/master/apps/app_baidu_chatgpt

有关项目源代码的事情,也可与我讨论。

7 项目复盘

项目还有一部分功能未实现,小小总结一下这次项目:

  • DDL无效论:时间不够用,下次别留这么少的时间了;
  • 百度开发者账号是需要认证的,需要几天的时间审核,容易耽误事儿;
  • 英飞凌的PSoC™ 62 很好用,搭配的开发工具、下载工具非常棒,能够让人快速上手;
  • xiotman第一次用于参加业余比赛,感觉使用起来还是比较清爽的,后面慢慢会都转到它来开发更多的项目。

8 致谢

感谢本次大赛的主办方RT-Thread和英飞凌,为广大开发者提供福利的同时,也带来了业内前沿的开发技术,是我们学习和提高的一个好平台,期待下次继续参与这样的比赛。

至于,比赛结果怎么样,倒是其次,参与过,学习过,提高过,差不多就可以了。

9 项目的TODOLIST

  • DuerOS SDK的深度研究,争取玩透小度音箱及百度的AI相关应用;
  • 基于ChatGPT的API KEY 熟练部署ChatGPT的应用,打通智能音箱与ChatGPT的沟通渠道;
  • 演示视频,待补充。

10 参考链接

  • RT-Thread x Infineon创意创客大赛
  • DuerOS开放平台 (baidu.com)
  • 把 chatGPT 接入小度 - 掘金 (juejin.cn)
  • xiotman: 一套致力于解决物联网终端应用多样化挑战的软件架构解决方案。 (gitee.com)
  • esp8266接入小度语音,小度音箱控制,附开源app控制
  • 巴法云接入文档
  • 巴法云开发者论坛

11 更多分享

本次项目介绍后,我还继续探索RT-Thread在各种嵌入式平台开发的可能性,并以此来要求自己输出各种关于RT-Thread、嵌入式、物联网等等热门技术话题的原创内容,欢迎大家持续关注我。

我是 架构师李肯全网同名),2022年电子发烧友论坛优秀开发者、2022年RT-Thread技术社区优秀布道者、CSDN博客专家,欢迎大家来交流。

12 文末福利

在正式发起福利活动介绍之前,我强烈给大家推荐一本安全技术领域的畅销书:《网络安全应急管理与技术实践》
 
在这里插入图片描述

本书围绕应急响应的具体流程与实践操作,带领读者深入浅出地了解与掌握应急处置工作,让读者从企业的具体需求与实践出发,为开展应急防护工作打下坚实的基础。
本书共分为 3 篇。第 1 篇(第 1~4 章)从网络安全应急响应的基本理论出发,让应急人员了解国家相关法律法规,使一切应急行为依法而动。
第2 篇(第 5~10 章)以网络安全应急技术与实践为主,沿着黑客的入侵路线,详细讲解了黑客主要的入侵方法与攻击手段,同时,我们也从安全管理员角度出发,详细讲解了如何分析入侵痕迹、检查系统薄弱点、预防黑客入侵, 重点突出如何开展应急自查与应急响应演练。
3 篇(第 11~13 章)从网络安全应急响应体系建设出发,阐述应急响应体系建立、应急预案的编写与演练以及 PCERF 应急响应方法,其中包含大量企业实践内容,引用了大量企业应急响应体系建设的实际案例,帮助读者了解如何建立有效且符合法律法规的网络安全应急响应体系。
本书作为信息安全保障人员认证(Certified Information Security Assurance Worker,CISAW)应急管理与服务认证培训考试指定教材。

在这里插入图片描述
值得特别注意的是:本书作为信息安全保障人员认证应急管理与服务认证培训考试指定教材。

如果等不及的朋友,可以上京东官网下单购买吧!购买链接:https://item.jd.com/13932136.html
 
在这里插入图片描述


  

为了感谢广大粉丝的热心支持,特开展新一期福利送书活动,活动详情 戳这里 ,大家快快来我的社区玩吧!

   
在这里插入图片描述

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

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

相关文章

微服务day1

一、认识微服务 1、单体架构 将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署。 优点 架构简单部署成本低 缺点 耦合度高 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fPfsQXAn-1689593800699)(https://picture.wangkay.tec…

GPT-1,GPT-2,GPT-3 InstructGPT论文学习笔记

Gpt-1 论文&#xff1a;《Improving Language Understanding by Generative Pre-Training》 GPT-1网络结构 无监督,使用12层transforer decoder结构,每一层维度是768,12个注意力heads token embedding矩阵,经过transformer decoder处理后,经过线性层和softmax层,得到下一个toke…

自定义一个SpringBoot starter 怎么实现

文章目录 1、创建一个空项目2、在新建的空项目中添加starter模块3、添加autoconfigure模块4、配置starter模块的pom文件5、配置autoconfigure模块1. 配置pom依赖2、创建xxProperties配置类3、创建服务提供类xxxService4、创建自动配置类xxxGenerateAutoConfiguration5 、META-I…

pgrouting 管线 联通分析

背景描述 啦啦啦啦&#xff0c;然后拉拉阿里&#xff0c;然后啦啦啦&#xff0c;最后就写了这个记录一下 数据准备 1 管线数据 数据要求&#xff08;拓扑检查&#xff09; 数据没有重叠要求 数据悬挂点问题得到合理结局&#xff0c;不存在数据连接点不一样的线 数据能按…

C. Fighting Tournament - 模拟+思维

分析&#xff1a; 每次两个数比较&#xff0c;大的留下&#xff0c;小的放后面&#xff0c;可以发现只要最大的到了第一位就只能是它赢&#xff0c;因此统计第一次遍历所有数组元素的赢的次数&#xff0c;如果查询是最大的数呢么就在加上k-n&#xff0c;赛时代码写的一团乱&…

适合投资者的交易策略,4步找到

在外汇交易市场中&#xff0c;根据市场情况和个人投资目标&#xff0c;制定灵活的交易策略是至关重要的。Forexclub认为投资者可以通过结合多种交易策略&#xff0c;打造出全面、科学且适合自己的外汇交易策略。 首先&#xff0c;基于技术指标的交易策略是判断市场趋势和转折点…

「数字化制造」 是如何让制造过程信息化的?

「数字化制造」 是如何让制造过程信息化的&#xff1f; 数字化制造是指利用数字技术和信息化手段来实现制造过程的智能化、自动化和高效化。 它通过将传感器、物联网、云计算、大数据分析、人工智能等先进技术与制造业相结合&#xff0c;实现生产过程的数字化、网络化和智能化…

【原创】实现ChatGPT中Transformer模型之Encoder-Decoder

作者&#xff1a;黑夜路人 时间&#xff1a;2023年7月 Transformer Block &#xff08;通用块&#xff09;实现 看以上整个链路图&#xff0c;其实我们可以很清晰看到这心其实在Encoder环节里面主要是有几个大环节&#xff0c;每一层主要的核心作用如下&#xff1a; Multi-he…

Flask 分页Demo

项目结构 app.py from flask import Flask, render_template, requestapp Flask(__name__)books [{title: Book 1, author: Author 1, year: 2020},{title: Book 2, author: Author 2, year: 2021},{title: Book 3, author: Author 3, year: 2022},{title: Book 4, author: …

《面试1v1》面试官让我讲一下Kafka的性能哪里好

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

公钥加密之『迪菲–赫尔曼密钥交换』,颜色混合的把戏

前奏&#xff1a; 迪菲-赫尔曼密钥交换是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。 颜色混合&#xff1a; 如图所示&#xff0c;蛇和老鼠要交换一个共享密钥&…

Springboot热部署相关功能

文章目录 前言一、Springboot如何在IDEA中开启热部署二、热部署的相关知识1.热部署的范围2.关闭热部署 前言 环境是Mac电脑下的IDEA 2023.1.X版本 如何在修改程序后自动进行加载修改后的程序而不是重启加载所有资源而更新程序&#xff0c;这就使用到了Springboot相关的热部署功…

120页商业银行企业级IT架构规划ppt

导读&#xff1a;原文《商业银行企业级IT架构规划ppt》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式&#xff1a; 如需获取完整的电…

2023年7月17日,比较器,TreeMap底层,LinkedHashMap,Set接口

比较器 Comparator是外部比较器&#xff0c;用于比较来对象与对象之间的&#xff0c;两个对象进行比较&#xff0c;多用于集合排序 Comparable可以认为是一个内比较器&#xff0c;根据对象某一属性进行排序的。 1. 使用场景 ​ 内置比较器&#xff08;Comparable&#xff09;的…

Windows10下ChatGLM2-6B模型本地化安装部署教程图解

随着人工智能技术的不断发展&#xff0c;自然语言处理模型在研究和应用领域备受瞩目。ChatGLM2-6B模型作为其中的一员&#xff0c;以其强大的聊天和问答能力备受关注&#xff0c;并且最突出的优点是性能出色且轻量化。然而&#xff0c;通过云GPU部署安装模型可能需要支付相应的…

手把手带你创建微服务项目

1.先创建以下项目结构 2.在父项目中导入以下依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- Web依赖 --><dependency>&l…

关于Java集合框架的总结

关于Java集合框架的总结 本篇文章先从整体介绍了java集合框架包含的接口和类&#xff0c;然后总结了集合框架中的一些基本知识和关键点&#xff0c;并结合实例进行简单分析。当我们把一个对象放入集合中后&#xff0c;系统会把所有集合元素都当成Object类的实例进行处理。从JDK…

分享四款导航页 个人主页html源码

一、开源免费&#xff0c;可以展示很多社交账号&#xff0c;也可以更换社交账号图标指向你的网站&#xff0c;上传后即可使用 https://wwwf.lanzout.com/ik7R912s031g 二、开源免费&#xff0c;不过部署稍微麻烦点 https://wwwf.lanzout.com/iCq2u12s02wb 三、适合做成导航页面…

Android性能优化篇[谷歌官方]

网上看到了个和Android性能优化相关的系列文章&#xff0c;觉的还不错&#xff0c;和大家分享下。 在Android领域&#xff0c;性能永远是一块大头。市场对这类人才的需求也是有增不减&#xff0c;而且薪资待遇也不错。如果大家想深入学习Android某个领域&#xff0c; 那性能这块…

190 → 169,50天瘦20斤随感

一头猪瘦二十斤没有人会在意&#xff0c;但一个人猛地瘦二十斤或许就会有意思~ 从五月底到7月中旬&#xff0c;大致50天瘦了21斤。本文大致从我自己的感想、方法、减肥前后的心态及身体变化等方面来给予你一些关键信息&#xff0c;希望对你有用吧。 当你发现自己真的在一斤一斤…