【游戏ai】从强化学习开始自学游戏ai-2 使用IPPO自博弈对抗pongv3环境
文章目录
- 前言
- 一、环境设计
- 二、动作设计
- 三、状态设计
- 四、神经网路设计
- 五、效果展示
- 其他问题
- 总结
前言
本学期的大作业,要求完成多智能体PPO的乒乓球对抗环境,这里我使用IPPO的方法来实现。
正好之前做过这个单个PPO与pong环境内置的ai对抗的训练,具体见:【游戏ai】从强化学习开始自学游戏ai-1非侵入式玩像素小鸟的第一部分。
想着这次做IPPO的自博弈,应该会好上手不少,但是实际情况,这个Pettingzoo里的环境,还是有些bug的,经过修改后,可以达到良好的效果。
效果见:
代码见:FreeRL_for_play/tree/main/IPPO_for_pong (欢迎star)
一、环境设计
环境见:https://pettingzoo.farama.org/environments/atari/pong/
环境参数:
主要是这里
问题1:
在具体实现训练中,(右边是first_0,左边是second_0),会出现first_0发完第一个球后,若是second_0没有接到球,则会出现不发球的情况。
解决:
在具体的环境里,有发球这个动作,1:Fire,经过测试,这个发球是遵循环境的规则来发球,让上一局赢的(得分+1)一方来发球。
于是设计每过200帧判断当前的分数是否与上一个200帧的分数一致,若是一致,则发球,这样可以避免上述的环境问题。
并且经过测试,即使双方在胶着打乒乓时,互相击球超过了200帧,此时分数没有变化,此发球动作也不会影响两者的击球,即并不会突然停下来发球。
'''
| Action | Behavior |
|:---------:|-----------|
| 0 | No operation |
| 1 | Fire |
| 2 | Move right |
| 3 | Move left |
| 4 | Fire right |
| 5 | Fire left |'
'''
问题2:
此环境如规则所说,不是一个零和环境,在击球时会出现击球的一方-1,被击球的一方0的奖励,此奖励在官方Atari
https://ale.farama.org/environments/pong/中也没有设置此奖励。
此奖励或许会导致误解,在击球后,在一个准备接球的状态时获得一个-1奖励,导致智能体学不好。
并且有此奖励时,奖励函数不会收敛到一个0和的状态。
解决:
将此奖励屏蔽掉。
当奖励出现不是一个为1一个为-1时,将这个奖励都置为0。
问题3:
当问题1被解决时,又迎来一个新问题,即在环境中出现了一步发球动作,此动作会调用env.step(),此时会导致一个大问题和一个小问题,小问题是:使得环境本身计算出的truncation不准确;大问题是:会偶尔出现刚好这一步之后这一步的truncation为True,所以之后就不应该再进行动作,否则就会出现无图像的错误。
解决:
小问题:手动计算truncation逻辑,将发球的步数也加入在内。
大问题:判断发球这步是否已结束,结束则跳过后面的动作,重新reset,不结束则继续,这里有个点要注意一下:关于是否将这发球这步的状态,动作,加入到经验池里,我这里没有加入,因为在动作设计上没有发球这步,所有我并没有添加。
最后环境的默认终止条件是一方达到21分时,则一方获胜,此游戏结束,默认截断条件是帧数达到100000(max_cycles=100000)时为截断,为了实际训练的速度的加快,这里将max_cycles设置为10000。
'''
class ParallelAtariEnv(ParallelEnv, EzPickle):def __init__(self,game,num_players,mode_num=None,seed=None,obs_type="rgb_image",full_action_space=False,env_name=None,max_cycles=100000,render_mode=None,auto_rom_install_path=None,):
'''
二、动作设计
同样的,这里将动作设计和【游戏ai】从强化学习开始自学游戏ai-1非侵入式玩像素小鸟的第一部分一样,将动作改成了二维动作,只有下述的2和3的动作。
'''
| Action | Behavior |
|:---------:|-----------|
| 0 | No operation |
| 1 | Fire |
| 2 | Move right |
| 3 | Move left |
| 4 | Fire right |
| 5 | Fire left |'
'''
三、状态设计
状态设计,和【游戏ai】从强化学习开始自学游戏ai-1非侵入式玩像素小鸟的第一部分一样,
参考https://gist.github.com/karpathy/a4166c7fe253700972fcbc77e4ea32c5
裁剪三通道图基本和参考代码一致:
def prepro(image_in):image=image_in.copy() # 第1张图image = image[35:185] # crop # 第2张图image = image[::2,::2,0] # downsample by factor of 2 # 第3张图image[image == 144] = 0 # 擦除背景 (background type 1) # 第4张图image[image == 109] = 0 # 擦除背景image[image != 0] = 1 # 转为灰度图,除了黑色外其他都是白色 return image.astype(np.float32).ravel()
此裁剪展示参考代码:【强化学习】玩转Atari-Pong游戏
在背景为109的裁剪展示
背景为144的裁剪展示
参考代码的状态输入:
第1帧为obs输入全为0的图,展成1维,将当前帧赋给上一帧
第2及之后的帧为obs输入为当前帧减去上一帧的图(展成1维),将当前帧赋给上一帧
效果展示为如下:
我的代码的状态输入:
第1帧为obs输入全为0的图,展成1维,将当前帧赋给上一帧(第一帧)
第2及之后的帧为obs输入为当前帧减去上一帧(此帧没变一直为第一帧)的图(展成1维)
这是我在实验时,不小心忘记加入prev_x = cur_x
的结果
效果展示如下:
但是这个效果竟然比参考代码的收敛效果好一点,于是就一直保留此状态设计。
效果对比如下,5为参考代码的效果,4为我的效果。
收敛时间上还是4快,
注:这里4我再测试一次是4.4h,应该是没选择用cpu训练的缘故导致的7h。
四、神经网路设计
这里Actor和Critic网路还是沿用简单的MLP设计,而没有使用cnn网路的设计
具体见:【游戏ai】从强化学习开始自学游戏ai-1非侵入式玩像素小鸟的第一部分
原因:
使用cnn网路来训练时,训练的效果太慢了
效果如下:
9,15,17为cnn训练,其余1,2,3,4,9为mlp训练。
五、效果展示
训练时,将两个智能体的奖励,终局分数,first智能体的胜率进行了保存。
由于这里将环境的截断设置为10000,会有可能在两者没有决出胜负(一方达到21)的情况下进行截断,所以将胜率设计如下:
## 计算胜率if episode_score[env_agents[0]] > episode_score[env_agents[1]]:win_list.append(1)elif episode_score[env_agents[0]] == episode_score[env_agents[1]]:win_list.append(0.5)else:win_list.append(0)win_rate = sum(win_list) / len(win_list) if len(win_list) < 100 else sum(win_list[-100:]) / 100
最终效果如下:
平滑后的奖励曲线
平滑后的分数曲线
从上可以看到奖励曲线,最终都收敛到了0附近,分数曲线收敛到了相近的分数附近,first智能体的胜率为50%左右。
这里分数曲线收敛到了10附近大概率是因为我环境的截断设置为10000帧的缘故,如果加大这个数目,可能最终两者都收敛到20附近,(21分获胜)。
这也符合零和博弈应该的效果,大家都是50%的获胜概率,50%的概率获得1分。50%的概率丢一分,那么奖励曲线就收敛到0附近了。
其他问题
问题:为什么使用常见意义上的MAPPO不能实现此自博弈训练。
解决:
IPPO和MAPPO的区别
宏观上 IPPO和MAPPO的区别就是critic的输入不一样,MAPPO的critic是global state信息,而IPPO的critic只有local obs。
微观上 MAPPO的训练逻辑是训所有agent的reward 即 (+1 -1 ) +(-1 +1)+ (-1 +1) = 0
IPPO是各自训自己的 (+1 -1 -1)(第一个和) (-1+1 +1)(第二个和)。
所以导致MAPPO只能用来合作环境,而IPPO既可以合作也可以博弈
老师说可以将MAPPO来当成一个PPO(智能体)来看,另外一个MAPPO当作对手智能体来看,可以这样学。
这里没有实现此想法,尝试用IPPO来做自博弈。
问题:环境的安装
解决:此环境的安装在windows上不可行,在WSL上的linux下解决安装问题
总结
此次项目需要很多前置经验和知识,是一次难度很大的项目,但是也使我获益良多,针对各种各样的环境,强化学习的训练难点有时即在算法的挑选上,又在环境的搭建上,又可能在奖励的设计上,也有可能是状态的挑选上,无论是哪个没有做到位,都有可能导致项目的失败。
相关文章:
【游戏ai】从强化学习开始自学游戏ai-2 使用IPPO自博弈对抗pongv3环境
文章目录 前言一、环境设计二、动作设计三、状态设计四、神经网路设计五、效果展示其他问题总结 前言 本学期的大作业,要求完成多智能体PPO的乒乓球对抗环境,这里我使用IPPO的方法来实现。 正好之前做过这个单个PPO与pong环境内置的ai对抗的训练&#…...
LeRobot 项目部署运行逻辑(三)——机器人及舵机配置
Lerobot 目前的机器人硬件以舵机类型为主,并未配置机器人正逆运动学及运动学,遥操作映射以舵机关节角度为主 因此,需要在使用前需要对舵机各项参数及初始位置进行配置 目录 1 Mobile ALOHA 配置 2 Dynamixel 配置 2.1 配置软件 2.2 SDK …...
Ubuntu20.04安装NVIDIA Warp
Ubuntu20.04安装NVIDIA Warp 安装测试 Warp的gitee网址 Warp的github网址 写在前面:建议安装前先参考readme文件自检系统驱动和cuda是否支持,个人实测建议是python3.9,但python3.8.20也可以使用。 写在前面:后续本人可能会使用这…...
电子病历高质量语料库构建方法与架构项目(临床情景理解模块篇)
引言 随着人工智能技术在医疗健康领域的广泛应用,电子病历(Electronic Medical Records,EMR)作为临床医疗数据的重要载体,已成为医学研究和临床决策支持的关键资源。电子病历高质量语料库的构建为医疗人工智能模型的训练和应用提供了基础支撑,其中临床情境理解模块是连接…...
WPF性能优化举例
WPF性能优化集锦 一、UI渲染性能优化 1. 虚拟化技术 ListView/GridView虚拟化: <ListView VirtualizingStackPanel.IsVirtualizing="True"VirtualizingStackPanel.VirtualizationMode="Recycling"ScrollViewer.IsDeferredScrollingEnabled=…...
【CUDA pytorch】
ev win10 3050ti 联想笔记本 nvcc --version 得到 PS C:\Users\25515> nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2022 NVIDIA Corporation Built on Tue_May__3_19:00:59_Pacific_Daylight_Time_2022 Cuda compilation tools, release …...
mac下载homebrew 安装和使用git
mac下载homebrew 安装和使用git 本人最近从windows换成mac,记录一下用homebrew安装git的过程 打开终端 command 空格,搜索终端 安装homebrew 在终端中输入下面命令,来安装homebrew /bin/bash -c "$(curl -fsSL https://raw.githu…...
Elasticsearch入门速通01:核心概念与选型指南
一、Elasticsearch 是什么? 一句话定义: 开源分布式搜索引擎,擅长处理海量数据的实时存储、搜索与分析,是ELK技术栈(ElasticsearchKibanaBeatsLogstash)的核心组件。 核心能力: 近实时搜索&…...
应对过度处方挑战:为药物推荐任务微调大语言模型(Xiangnan He)
Abstract 药物推荐系统因其有潜力根据患者的临床数据提供个性化且有效的药物组合,在医疗保健领域备受关注。然而,现有方法在适应不同的电子健康记录(EHR)系统以及有效利用非结构化数据方面面临挑战,导致其泛化能力有限…...
41 python http之requests 库
Python 的requests库就像你的 "接口助手",用几行代码就能发送 HTTP 请求,自动处理复杂的网络交互,让你告别手动拼接 URL 和解析响应的痛苦! 一、快速入门:3 步搞定基本请求 1.1 安装库:一键开启助手功能 pip install requests 1.2 发送 GET 请求 import r…...
百度网盘golang实习面经
goroutine内存泄漏的情况?如何避免? goroutine内存泄漏基本上是因为异常导致阻塞, 可以导致阻塞的情况 1 死锁, goroutine 等待的锁发生了死锁情况 2 chan没有正常被关闭,导致读取读chan的goroutine阻塞 如何避免 1 避免死锁 2 正常关闭 3 使用context管…...
super_small_toy_tpu
super_small_toy_tpu 小狼http://blog.csdn.net/xiaolangyangyang 1、基础框图 2、源码下载: GitHub - dldldlfma/super_small_toy_tpu 3、安装iverilog、vvp、gtkwave windows安装:https://bleyer.org/icarus/ ubuntu安装:sudo ap…...
Redis缓存穿透、缓存击穿与缓存雪崩:如何在.NET Core中解决
在高并发的互联网系统中,缓存技术作为优化系统性能的重要手段,已被广泛应用。然而,缓存系统本身也存在一些常见的问题,尤其是 缓存穿透、缓存击穿 和 缓存雪崩。这些问题如果处理不当,可能导致系统性能严重下降&#x…...
驱动车辆诊断测试创新 | 支持诊断测试的模拟器及数据文件转换生成
一 背景和挑战 | 背景: 随着汽车功能的日益丰富,ECU和域控制器的复杂性大大增加,导致测试需求大幅上升,尤其是在ECU的故障诊断和性能验证方面。然而,传统的实车测试方法难以满足高频率迭代和验证需求,不仅…...
VS Code技巧2:识别FreeCAD对象
在使用VS Code阅读FreeCAD代码或者FreeCAD的工作台代码时,VS Code无法识别FreeCAD对象,会提示Import “FreeCAD” could not be resolved: 问题解决如下几步即可。 第一步:确认 FreeCAD 的 Python 环境路径 在FreeCAD的Python控制…...
泰迪杯特等奖案例学习资料:基于多模态融合与边缘计算的智能温室环境调控系统
(第十二届泰迪杯数据挖掘挑战赛特等奖案例解析) 一、案例背景与核心挑战 1.1 应用场景与行业痛点 在现代设施农业中,温室环境调控直接影响作物产量与品质。传统温室管理存在以下问题: 环境参数耦合性高:温度、湿度、光照、CO₂浓度等参数相互影响,人工调控易顾此失彼。…...
猿人学web端爬虫攻防大赛赛题第13题——入门级cookie
1. F12开发者模式 刷新第一页,仔细研究发现里面有三次请求名为13的请求,根据题目提示cookie关键字,所以主要留意请求和响应的cookie值。 三次请求都带了sessionid,说明存在session(后面写代码要用session来写&#x…...
机器指标监控技术方案
文章目录 机器指标监控技术方案架构图组件简介Prometheus 简介核心特性适用场景 Grafana 简介核心特性适用场景 Alertmanager 简介核心特性适用场景 数据采集机器Node ExporterMySQL ExporterRedis ExporterES ExporterRocketMQ ExporterSpringcloud ExporterNacos 数据存储短期…...
数据库设计理论:从需求分析到实现的全流程解析
引言 在当今信息爆炸的时代,数据已成为企业和组织最宝贵的资产之一。如何有效地组织、存储和管理这些数据,是数据库设计需要解决的核心问题。一个优秀的数据库设计能够提高系统性能,确保数据一致性,降低维护成本,而糟…...
一文详解 Linux下的开源打印系统CUPS(Common UNIX Printing System)
文章目录 前言一、CUPS 简介二、CUPS 常用指令解析2.1 安装 CUPS2.2 启动/重启服务2.3 添加打印机(核心操作)2.4 设置默认打印机2.5 打印文件2.6 查看打印任务2.7 取消打印任务2.8 查看、移除已添加的打印机 三、调试与常见问题3.1 日志查看3.2 驱动问题…...
uniapp打包apk详细教程
目录 1.打apk包前提条件 2.获取uni-app标识 3.进入dcloud开发者后台 4.开始打包 1.打apk包前提条件 1.在HBuilderX.exe软化中,登录自己的账号 2.在dcloud官网,同样登录自己的账号。没有可以免费注册。 2.获取uni-app标识 获取方法:点…...
C++初阶-string类2
目录 1.迭代器 1.1普通迭代器的使用 1.2string::begin 1.3string::end 1.4const迭代器的使用 1.5泛型迭代器和const反向迭代器 1.6string::rbegin 1.6string::rend 1.7string::cbegin、string::cend、string::crbegin、string::crend 与begin/end、rbegin/rend的区别 …...
Qt QComboBox 下拉复选多选(multicombobox)
Qt QComboBox 下拉复选多选(multicombobox),备忘,待更多测试 【免费】QtQComboBox下拉复选多选(multicombobox)资源-CSDN文库...
逻辑回归之参数选择:从理论到实践
在机器学习的广阔领域中,逻辑回归作为一种经典的有监督学习算法,常用于解决分类问题。它以其简单易懂的原理和高效的计算性能,在实际应用中备受青睐。然而,要充分发挥逻辑回归的优势,参数选择是关键环节。本文将结合信…...
10、属性和数据处理---c++17
一、[[fallthrought]] 用途:在 switch 语句中标记某个分支 (case) 故意不写 break,明确告知编译器“执行穿透”是有意为之。 仅在需要向下穿透时使用,且应添加注释说明原因 #include<cstdio> #include<iostream> using namesp…...
conda管理python环境
安装conda 使用anaconda官网安装地址:https://www.anaconda.com/download/success 配置镜像环境 conda config --add channels Index of /anaconda/pkgs/main/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror conda config --add channels Index of /an…...
【Python学习路线】零基础到项目实战系统
目录 🌟 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 🧠 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 💻 二、实战演示环境配置要求核心代码实现运行结果验证 ⚡ 三、性能对比测试方法论量化数据对比…...
C/C++核心机制深度解析:指针、结构体与动态内存管理(面试精要)
C/C核心机制深度解析:指针、结构体与动态内存管理(面试精要) 引言 在系统级编程领域,C/C语言凭借对硬件的直接操作能力和高效的内存管理机制,长期占据主导地位。面试中,指针、结构体和动态内存管理作为三…...
宇树科技举办“人型机器人格斗大赛”
2025 年 5 月至 6 月,一场全球瞩目的科技盛宴 —— 全球首场 “人形机器人格斗大赛”,将由杭州宇树科技盛大举办。届时,观众将迎来机器人格斗领域前所未有的视觉震撼。 为打造最强参赛阵容,宇树科技技术团队在过去数周里…...
getattr 的作用
getattr 是 Python 内置的一个函数,用于“动态地”获取对象的属性。**它允许你在运行时通过属性名称(字符串形式)来访问对象的属性,而不用在代码中直接硬编码属性名。**下面详细介绍该方法的用法和注意事项: ────…...
腾讯云服务器性能提升全栈指南(2025版)
腾讯云服务器性能提升全栈指南(2025版) 一、硬件选型与资源优化 1. 实例规格精准匹配 腾讯云服务器提供计算型CVM、内存型MEM、大数据型Hadoop等12种实例类型。根据业务特性选择: • 高并发Web应用:推荐SA3实例࿰…...
Kotlin与Jetpack Compose的详细使用指南
Kotlin与Jetpack Compose的详细使用指南,综合最新技术实践和官方文档整理: 一、环境配置与基础架构 项目创建 在Android Studio中选择Empty Compose Activity模板,默认生成包含Composable预览的MainActivity2要求Kotlin版本≥1.8.0&…...
潇洒郎: 100% 成功搭建Docker私有镜像仓库并管理、删除镜像
1、Registry Web管理界面 2、拉取Registry-Web镜像 创建配置文件 tee /opt/zwx-registry/web-config.yml <<-EOF registry:url: http://172.28.73.90:8010/v2name: registryreadonly: falseauth:enabled: false EOF 拉取docker-registry-web镜像并绑定Registry仓库 …...
【Spring Boot 注解】@ConfigurationProperties
文章目录 ConfigurationProperties注解一、简介二、依赖引入三、基本用法四、主要特性五、激活方式六,优点七、与 Value 对比 ConfigurationProperties注解 一、简介 ConfigurationProperties 是 Spring Boot 提供的一个强大注解,用于将外部配置&#…...
阿里云服务迁移实战: 06-切换DNS
概述 按前面的步骤,所有服务迁移完毕之后,最后就剩下 DNS 解析修改了。 修改解析 在域名解析处,修改域名的解析地址即可。 如果 IP 已经过户到了新账号,则不需要修改解析。 何确保业务稳定 域名解析更换时,由于 D…...
Java实现归并排序算法
1. 归并排序原理图解 归并排序是一种分治算法,其核心思想是将数组分成两半,分别对这两半进行排序,然后将排序后的两半合并。以下是归并排序的步骤: 1. 分治: - 将数组分成两半。 - 递归地对每半部分进行归并排序。 2. …...
Vue 项目中运行 `npm run dev` 时发生的过程
步骤1:找到「任务说明书」(package.json) 当你输入 npm run dev,系统首先会去查项目的 「任务说明书」(即 package.json 文件),看看 dev 这个任务具体要做什么。 示例代码(package.json 片段)…...
Python3(19)数据结构
在 Python 编程中,数据结构是组织和存储数据的重要方式,合理选择和使用数据结构能显著提升程序的效率和可读性。这篇博客通过丰富的代码示例深入学习 Python3 的数据结构知识,方便日后复习回顾。 一、列表(List) 1.1…...
macOS 安装了Docker Desktop版终端docker 命令没办法使用
macOS 安装了Docker Desktop版终端docker 命令没办法使用 1、检查Docker Desktop能否正常运行。 确保Docker Desktop能正常运行。 2、检查环境变量是否添加 1、添加环境变量 如果环境变量中没有包含Docker的路径,你可以手动添加。首先,找到Docker的…...
VR 汽车线束培训:探索高效学习新路径
在汽车线束生产领域,VR 汽车线束培训对于新员工的成长至关重要,它是一个关键环节,直接影响着生产效率和产品质量。传统的培训方式,通常是新员工在老员工的指导下,通过实际操作来学习线束装配流程。这种方式不仅耗费大量…...
k8s术语之Deployment
Deployment为Pod和Replica Set(下一代Replication Controller)提供声明式更新 您只需要在Deployment中描述您想要的目标状态是什么,Deployment controller就会帮您将Pod和ReplicaSet的实际状态改变到您的目标状态。您可以定义一个全新的Deployment Controller的职责…...
对js的Date二次封装,继承了原Date的所有方法,增加了自己扩展的方法,可以实现任意时间往前往后推算多少小时、多少天、多少周、多少月;
封装js时间工具 概述 该方法继承了 js 中 Date的所有方法;同时扩展了一部分自用方法: 1、任意时间 往前推多少小时,天,月,周;参数1、2必填,参数3可选beforeDate(num,formatter,dateVal); befo…...
17、商品管理:魔药商店运营——React 19 CRUD实现
一、魔药商店的炼金基石 1. 魔药配方契约(数据模型设计) // 预言池契约(Supabase Schema) interface Potion { id: uuid, name: string, effect: healing | transformation | attack, stock: number, moonSensitive: boo…...
2025-04-30 AIGC-如何做短片视频
摘要: 2025-04-30 AIGC-如何做短片视频 如何做短片视频: 一、画图修图 1.保存视频(无水保存) 2.文案提取(提取文案) 3. DeepSeek(提示词) 4.小梦Ai(图片视频) 5.修图Ai 6.扩图Ai 7.养生…...
【自然语言处理与大模型】如何获取特定领域的微调数据集?
在特定领域中,数据集通常由提出需求的一方提供。然而,在某些情况下,如果他们未能提供所需的数据,或者你正在独立开展一个项目,并且需要相应的数据来推进工作,这时你应该怎么办呢?本文提供一种思…...
算法导论第6章思考题
6.3-2 func(A) 1 A.heap-sizeA.len 2 \quad for i ⌊ A . l e n 2 ⌋ \lfloor {A.len\over2}\rfloor ⌊2A.len⌋ downto 1 3 \qquad MAX-HEAPIFY(A,i) 对于第2行的循环控制变量i来说,为啥要求它是从 ⌊ A . l e n 2 ⌋ \lfloor {A.len\over2}\rfloor ⌊2A.len⌋…...
论文阅读:2024 ACM SIGSAC Membership inference attacks against in-context learning
总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Membership inference attacks against in-context learning https://arxiv.org/pdf/2409.01380 https://www.doubao.com/chat/4030440311895554 速览 这篇论文主要研究了…...
读论文笔记-CoOp:对CLIP的handcrafted改进
读论文笔记-Learning to Prompt for Vision-Language Models Problems 现有基于prompt engineering的多模态模型在设计合适的prompt时有很大困难,从而设计了一种更简单的方法来制作prompt。 Motivations prompt engineering虽然促进了视觉表示的学习,…...
国产化海光C86架构服务器安装windows实录
最近几年与红蓝关系急转直下,尤其是科技领域尤为突出。随之而来的就是软硬件的国产化大潮。由于行业的原因根据要求必须使用国产化服务器、国产化操作系统、国产化数据库、国产化中间件。虽然闭关锁国断开红蓝联系可以在一定程度激发国产化发展,但是不得…...
基于SpringBoot的旅游网站的设计与实现
资源详情: 私信我或点击链接获取: 基于SpringBoot的旅游网站的设计与实现资源-CSDN文库 摘要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势,旅游网站当然也不能排除在外…...