1.AnimeGANv2复现【动漫风格迁移】
2.P-tuning V2论文和代码实现解析
3.SeaTunnel连接器V1到V2的搭搭建代码架构演进与探究
4.Langchain-Chatchat项目:4.1-P-Tuning v2实现过程
5.全新PHP站长工具箱v2[对接API接口平台]
6.ocr-ABCNetV2 环境搭建
AnimeGANv2复现【动漫风格迁移】
前几天,我看到了一篇关于AnimeGANv2复现的建源博客,觉得这个项目非常有趣,搭搭建代码因此决定进行一次复现。建源在进行复现的搭搭建代码过程中,我遇到了一些问题,建源印务下单源码现在我将这些问题分享给大家。搭搭建代码
项目获取的建源方式有两种:首先,你可以通过Git Bash将代码克隆下来,搭搭建代码或者直接在GitHub上下载压缩包并保存。建源
为了搭建环境,搭搭建代码我使用了Python社区版、建源PyTorch、搭搭建代码CUDA、建源cudnn以及Anaconda。搭搭建代码以下是具体的配置步骤:
1. 首先下载并安装Anaconda,网上有许多教程可以参考。
2. 创建一个新的虚拟环境。
3. 下载适用于你电脑的CUDA和cudnn版本。
4. 访问PyTorch官网获取对应版本的安装命令。
5. 打开Anaconda Prompt,输入activate [你的环境名称]激活环境,然后输入安装PyTorch的命令。
6. 接着,在Anaconda Navigator中找到新创建的环境,并安装OpenCV。
7. 安装Python社区版后,打开文件。
配置完成后,我们就可以进行项目运行了。在博客中提到可以直接输入命令,但在实际操作中我遇到了一些问题:
1. 大小问题,博客中没有明确提及这一点。ipweather源码代码并未对图像进行预处理,我最初以为代码中包含了这个步骤,结果却因为大小过大而导致显存不足。越大,需要的显存越多。因此,在输入时需要进行裁剪(如果你的预算允许的话)。如果仍然遇到显存不足的情况,建议使用CPU。
2. 输入命令时,需要指定目录,这里的目录指的是文件夹而非单个图像。
3. 模型文件的路径在源码中默认存在一些问题,代码中的默认路径并不存在,所以需要更改所有路径。模型文件共有四个权重文件,你可以根据个人喜好选择使用。
建议大家先进行初步的配置并尝试运行,避免每次遇到问题都需重新配置,这样会比较麻烦。
我复现的结果如下:
原:...
处理后的:...
总体而言,这个项目非常有趣,我计划后续对视频进行处理,并对代码进行优化。如果有任何问题,欢迎在评论区留言。这篇文章使用了Zhihu On VSCode进行创作和发布。
P-tuning V2论文和代码实现解析
经过对清华开源的ChatGLM-6B微调,我进一步探索了P-tuning v2,并对其源码进行了深入研究,以解决其实现方式的疑问。P-tuning v2,kaios源码作为Deep Prompt Tuning的优化与适应版本,旨在为生成和知识探索提供解决方案。其关键改进在于,通过在预训练模型的每一层引入连续提示,而不仅仅是局限于输入层,从而显著提升了性能,尤其针对小型模型与复杂任务。
基于作者的优化与实现细节,P-tuning v2能够实现与Fine-tuning相媲美的性能,显著扩大了其适用范围。值得注意的是,相较于Prefix tuning,P-tuning v2更侧重于提升对NLU任务的适应性。
在代码层面,P-tuning v2的核心在于巧妙地利用`past_key_value`参数,实现连续prompt的融入。通过在`RobertaPrefixForTokenClassification`类的`forward`函数中进行初始化,以及`RobertaModel`到`RobertaEncoder`,再到`self.layer`(`nn.ModuleList([RobertaLayer(config) for _ in range(config.num_hidden_layers)])`)的路径追踪,实现连续提示的高效传递。
为了简化理解,我编写了仿真代码,直接展示了P-tuning v2连续prompt实现的核心过程。通过这一代码示例,读者可以直观地了解P-tuning v2如何通过`past_key_value`参数实现连续prompt的融入,从而达到提升模型性能的目的。
总结而言,P-tuning v2通过引入连续prompt并优化其实现细节,显著提升了预训练模型在生成和知识探索任务中的性能,特别适用于小型模型与复杂任务场景。其关键在于巧妙利用`past_key_value`参数实现连续prompt的高效融入,并通过仿真代码直观展示了这一实现过程,kyber 源码为读者提供了深入理解P-tuning v2实现方式的途径。
SeaTunnel连接器V1到V2的架构演进与探究
核心概念
SeaTunnel设计的核心是利用设计模式中的控制翻转或依赖注入,主要包括以下两点:
数据处理过程大致分为输入 -> 转换 -> 输出,更复杂的数据处理实质上也是这些行为的组合。
内核原理
SeaTunnel将数据处理的各种行为抽象成Plugin,并使用SPI技术进行动态注册,设计思路保证了框架的灵活扩展。在以上理论基础上,数据的转换与处理还需要做统一的抽象,如著名的异构数据源同步工具DataX,也对数据单条记录做了统一抽象。
SeaTunnel V1架构体系中,由于背靠Spark和Flink两大分布式计算框架,框架已经为我们做好了数据源抽象的工作,Flink的DataStream、Spark的DataFrame已经是对接入数据源的高度抽象。在此基础上,我们只需要在插件中处理这些数据抽象即可。同时,借助Flink和Spark提供的SQL接口,还可以将每次处理完的数据注册成表,方便用SQL进行处理,减少代码的开发量。
实际上,SeaTunnel的最终目的是自动生成一个Spark或Flink作业,并提交到集群中运行。
SeaTunnel连接器V1 API解析架构概览
目前在项目dev分支下,SeaTunnel连接器V1 API所在的模块如图所示:
seatunnel-api-base
在基础模块中,有以下代码:
为了更清晰地理解这些类之间的关系,笔者制作了一张简单的UML类图:
整个API的组成可以大体分为三部分:构建层接收命令参数构建执行器,执行器初始化上下文,上下文注册插件并启动插件,eauto源码至此,整个作业开始运行。
seatunnel-api-spark
在Spark引擎API层有以下代码:
同样,笔者整理了一张UML类图来表示它们之间的关系:
整个流程与Base模块一致,在此不再赘述,有兴趣的读者可以自行查看源码。
seatunnel-api-flink
在Flink引擎API层有以下代码:
同样,笔者整理了一张UML类图来表示它们之间的关系:
整个流程与Base模块一致,在此不再赘述,有兴趣的读者可以自行查看源码。
SeaTunnel连接器V1运行原理启动器模块概览
整个项目的最外层启动类都放在以下模块中:
与连接器V1有关的模块如下:
执行流程
为了更好地理解SeaTunnel V1的启动流程,笔者制作了一张简单的时序图:
程序最外层的启动由start-seatunnel-${ engine}.sh开始,用户将配置文件从脚本传入,脚本调用org.apache.seatunnel.core.spark.SparkStarter或org.apache.seatunnel.core.flink.FlinkStarter。实际上,这个类只做一个工作:将所有参数拼接成spark-submit或flink命令,然后脚本接收spark-submit或flink命令并提交到集群中。提交到集群中真正执行job的类实际上是org.apache.seatunnel.spark.SeatunnelSpark或org.apache.seatunnel.flink.SeatunnelFlink。读者如果想直接深入了解作业启动核心流程的话,推荐阅读这两个类的源码。
执行原理SparkFlinkSeaTunnel连接器V2 API解析架构概览
目前在项目dev分支下,SeaTunnel连接器V2 API所在的模块如图所示:
数据抽象
SeaTunnel连接器V2 API在数据层面做了抽象,定义了自己的数据类型,这是与连接器V1最大的不同点。连接器V1使用的是引擎数据抽象的能力,但连接器V2自己提供了这个异构数据源统一的能力。
在所有的Source连接器和Sink连接器中,处理的都是SeaTunnelRow类型数据,同时SeaTunnel也对内设置了数据类型规范。所有通过Source接入进来的数据会被对应的连接器转化为SeaTunnelRow送到下游。
API Common
在API common包下有以下接口的定义:
在这里,由于篇幅关系,只介绍比较核心的几个接口:
具体接口中有哪些方法,读者可以自行阅读对应类的源码,在此不再赘述。
API Source
在API source包下有以下接口的定义:
在这里,由于篇幅关系,只介绍比较核心的几个接口:
API Sink
在API sink包下有以下接口的定义:
在这里,由于篇幅关系,只介绍比较核心的几个接口:
小结
连接器V2在架构分层上与计算引擎进行解耦,定义了自己的元数据定义以及数据类型定义,在API层和计算引擎层增加了翻译层,将SeaTunnel自定义的数据源通过翻译层接入到引擎中,从而真正实现接口和引擎分离的目的。
SeaTunnel连接器V2运行原理启动器模块概览
整个项目的最外层启动类都放在以下模块中:
与连接器V2有关的模块如下:
执行流程
为了更好地理解SeaTunnel V2的启动流程,笔者制作了一张简单的时序图:
程序最外层的启动由start-seatunnel-${ engine}-new-connector.sh开始,用户根据将配置文件从脚本传入,脚本调用org.apache.seatunnel.core.spark.SparkStarter或org.apache.seatunnel.core.flink.FlinkStarter。实际上,这个类只做一个工作:将所有参数拼接成spark-submit或flink命令,然后脚本接收spark-submit或flink命令并提交到集群中。提交到集群中真正执行job的类实际上是org.apache.seatunnel.spark.SeatunnelSpark或org.apache.seatunnel.flink.SeatunnelFlink。读者如果想直接深入了解作业启动核心流程的话,推荐阅读这两个类的源码,连接器V2和连接器V1的启动流程基本一致。
SeaTunnel V2 on Spark
SeaTunnel Source连接器V2将异构数据源接入,生成以SeaTunnelRow为基本单位的数据源,在翻译层实现了Spark DataSource API V2,翻译层使得Spark可以接入以SeaTunnelRow为基本单位的数据源,从而实现无缝接入Spark的目的。
关于Spark DataSource API V2的详细信息,读者可以参考: 独立开发并免费提供。
程序适用于个人研究学习和商业用途,但请保留版权并避免随意篡改代码。
欢迎转载分享,但请确保提供正确出处,禁止出售源码盈利。
更新说明(--)
修复管理后台和小程序配置显示错误。
修复PC站前端显示错误。
更新说明(--)
新增网站管理后台,数据保存至接口平台服务器。
所有工具集成检测与验证功能。
重写内核,支持接口平台sk功能,增强安全性。
工具自动加载,无需手动添加。
增加微信小程序管理功能。
更新说明(--)
取消后台和MYSQL,使用文件储存和调用数据。
框架与工具分离,仅需一个KEY。
增加工具下载列表,更新通知功能。
已使用商业版模板。
安装教程(请严格按顺序操作)
需PHP7.0~7.4,建议使用PHP7.1,可选Memcached。
建议使用服务器+宝塔面板,虚拟主机也适用,但需注意配置。
推荐使用Linux系统,WEB建议Nginx-Tengine2.2或Apache2.4。
配置伪静态。
上传所有文件至网站根目录。
设置网站信息,绑定域名后即可使用。
设置文件说明文档,包括key.php文件。
key.php用于链接API接口平台,控制全局设置。
填写必填项:API_KEY、$code(注册时由管理员填写且不可更改),可选填:sk。
管理员账号注册地址:点击链接进入文档,点调试工具,按提示注册。
查看详细设置文档,确保正确配置。
文章使用文章同步助手同步。
ocr-ABCNetV2 环境搭建
端到端的文字识别模型,能够识别弯曲文本。尽管百度的 pgnet 模型无法使用,但我找到了一款新的模型。虽然效果尚未测试,但环境搭建的过程确实令人感到挑战,detectron2 的部署似乎不太友好。以下是环境搭建的具体步骤记录。
注意事项:在使用 pytorch 和 detectron2 时,需要确保它们的 cuda 版本相同。这里我们统一使用 cuda-.2 版本。
首先,创建一个 conda 虚拟环境。
如果您不希望遇到麻烦,可以先将所有依赖包安装好,这里提供作者自己记录的依赖包列表。
1、安装 pytorch
如果网络状况不佳,可以使用清华源。默认安装的将是 cuda-.2 版本。
2、安装 detectron2
有两种安装方式:1)下载源码,编译安装;2)直接下载官方编译好的包。这里我们选择第二种方式,避免不必要的麻烦。
3、安装 AdelaiDet
由于需要编译源码,首先需要安装 cuda-.2 版本。您可以从 nvidia 官网下载安装命令,如下所示:
配置 cuda 环境变量:
安装 AdelaiDet,下载项目代码
编译安装:
如果网络状况不佳,依赖包下载会超时。在这种情况下,可以先设置 pip 清华源,设置方法如下,在当前目录新建 setup.cfg 文件,输入以下内容:
然后再进行编译安装:
测试推理
中文模型下载地址:github.com/aim-uofa/Ade...
选择 Experimental results on ReCTS 这栏,查看实验数据表。感觉该模型仅进行了文本检测任务的训练,并未进行识别任务的训练。
下载中文字体文件和中文字典文件,并将它们放在当前根目录下:
注意,该模型仅支持 gpu 推理。在 cpu 上运行时,会直接报错,因为 pytorch 框架的 SyncBN 层只能在 gpu 上运行。当然,您也可以通过修改 v2_chn_attn_R_.yaml 文件,将第 行的配置参数 SyncBN 修改为 BN,然后运行。虽然程序可以运行,但这样修改是否会影响推理效果尚不清楚。
如果只关注如何将弯曲文本拉直,可以参考:github.com/Yuliang-Liu/... 工程,下载源码,运行示例文件。
如果只关注贝塞尔曲线的生成,可以参考:drive.google.com/file/d...
注意,需要梯子才能访问源码。源码中只有一个 python 脚本文件,为了方便广大网友使用,这里直接将 python 代码复制下来了:
以上就是全部代码。代码是完整的,但使用方法需要您自己领悟。
报错处理
可能会遇到以下错误:
解决方法,编辑 adet/structures/beziers.py 文件,添加如下方法:
参考:github.com/aim-uofa/Ade...
如果仍然报错,按照官方文档编译安装指定 commit_id 版本的 detectron2。
求助 前天收阳线 昨天收阴线 今天收阳线的同花顺股票源码 谢谢了
这是多方炮组合,
并不是随便在哪个位置出现都适合的。
试试这个公式。
V1:=CLOSE>OPEN AND REF(CLOSE,1)<REF(OPEN,1) AND REF(CLOSE,2)>REF(OPEN,2)
AND CLOSE>REF(OPEN,1) AND CLOSE>REF(CLOSE,2);
V2:=V1 AND REF(V1,2) AND C>REF(C,4);
BACKSET(V2,5) ;
V3:=V1 AND REF(V1,3) AND C>REF(C,5);
BACKSET(V3,6);
V4:=V1 AND REF(V1,4) AND C>REF(C,6);
BACKSET(V4,7);