开发自动化脚本时如何进行插件开发?

油猴脚本(Tampermonkey Script)是一种用户脚本管理工具 油猴脚本作为一种用户脚本管理工具,具有广泛的应用场景和灵活性。通过油猴脚本,用户可以轻松地修改和增强网页的功能和界面。虽然油猴脚本和浏览器插件在某些方面有相似之处,但它们在开发复杂度、安装管理以及功能范围上有显著区别。通过多种途径,开发者可以利用油猴脚本实现盈利。 阅读详情

一、什么是插件开发

在自动化脚本开发过程中,平台内置的能力有时无法满足特定业务场景的需求。例如,你可能需要使用某个第三方的 OCR 文字识别服务、调用特定的图像处理算法,或者集成某个专有的 SDK——这些功能平台本身并未直接提供。冰狐智能辅助的插件机制正是为了解决这一问题而设计的。

插件以独立的 APK 形式提供,开发者可以将任何第三方功能封装成插件,然后在冰狐的 JavaScript 脚本中加载并调用。这种设计使得平台的功能边界被极大地扩展——你不再受限于平台内置的工具集,而是可以根据实际需求自由地集成任何 Android 生态下的能力。

二、插件开发的核心 API

冰狐智能辅助为插件调用提供了两个核心的全局函数/对象,所有插件交互都围绕它们展开。

1. loadPlugin——加载插件

loadPlugin 是一个全局函数,用于加载指定路径的插件 APK 文件,并返回一个 Plugin 对象。它接受一个必填参数:

参数名类型说明
pathstring插件文件路径,支持全路径、相对路径和资源文件路径

路径的三种写法示例:

// 全路径
var plugin = loadPlugin('/sdcard/myPlugin.apk')

// 相对路径(相对于冰狐的工作目录)
var plugin = loadPlugin('myPlugin.apk')

// 资源文件(通过打包将插件打包进 APK)
var plugin = loadPlugin('asset:myPlugin.apk')

2. Plugin.newObject——创建 Java 对象

Plugin 对象提供了 newObject 方法,用于创建插件中指定 Java 类的实例:

函数名参数返回值说明
newObjectjava类的路径名Object创建对应的对象

使用示例:

var obj = plugin.newObject('com.example.dynamiccall.MyClass')

创建对象后,就可以直接调用该对象暴露的方法:

var r = obj.getStr(rsContext)
console.log('r:', r)

三、插件开发的核心规则

官方文档明确列出了插件开发需要遵循的规则,这些规则直接关系到插件能否被正确加载和调用。

规则一:接口类的构造函数不要带参数

接口类指的是 newObject 函数参数对应的类,也就是与 JavaScript 交互的 Java 类。这个类的构造函数必须是无参的。如果需要初始化操作,应单独提供一个初始化方法(如 init 等),由 JS 端在创建对象后主动调用。

规则二:传递 JSON 数据时使用字符串

若想向插件传递 JSON 数组或 JSON 对象,不能直接传递 Java 的 JSONObject 或 JSONArray,而应使用 JSON.stringify() 将数据转换为 JSON 字符串作为参数传递。

规则三:返回复杂数据时返回 JSON 字符串

若接口类中的方法需要返回数组或对象之类的复杂数据结构,可以直接返回 JSON 字符串,然后在 JS 端使用 JSON.parse() 进行解析。

规则四:可以直接返回 Java 对象

除了返回 JSON 字符串,接口类中的方法也可以直接返回 Java 对象。这意味着插件与 JS 之间的数据交互方式具有一定的灵活性。

规则五:避免重复加载同一个插件

文档明确提醒:注意不要多次加载同一个插件。重复加载可能导致资源冲突或意料之外的错误。

四、Java 接口类的设计要点

基于上述规则,设计 Java 接口类时需要注意以下几个关键点:

无参构造函数:这是最基本的要求。如果类确实需要依赖某些外部资源才能工作,应将这些依赖的注入放在一个单独的 init 方法中,由 JS 在创建对象后调用。

方法的参数和返回值设计:考虑到 JS 与 Java 之间的类型映射,建议对于复杂数据结构统一使用 JSON 字符串作为传输格式。这样既保证了数据结构的完整性,又避免了类型转换的麻烦。

异常处理:插件中的 Java 代码应当妥善处理异常,避免因未捕获的异常导致整个脚本崩溃。可以考虑在方法内部捕获异常后,通过返回值(如包含 error 字段的 JSON 字符串)将错误信息传递给 JS 端。

五、完整的开发与调用流程

一个完整的插件开发流程大致如下:

第一步:编写 Java 插件代码

在 Android 项目中创建一个类,确保:

  • 类有 public 的无参构造函数

  • 需要暴露给 JS 的方法为 public

  • 方法参数和返回值遵循上述数据类型规则

第二步:打包为 APK

将项目编译打包成 APK 文件。需要注意的是,插件 APK 应当是一个功能完整的 Android 应用包,而不仅仅是一个类库。

第三步:放置插件文件

将 APK 文件放置到冰狐智能辅助可以访问的目录,通常是 /sdcard/ 下的某个位置,或者通过打包功能将其作为资源文件一并打包。

第四步:在 JS 脚本中调用

function main() {
    // 1. 加载插件
    var plugin = loadPlugin('/sdcard/myPlugin.apk')
    
    // 2. 创建插件中的对象
    var obj = plugin.newObject('com.example.dynamiccall.MyClass')
    
    // 3. 如果需要初始化,调用初始化方法
    // obj.init(someParam)
    
    // 4. 调用业务方法
    var result = obj.getStr(rsContext)
    console.log('result:', result)
}

六、典型应用场景

插件机制在实际开发中有着广泛的应用场景:

OCR 文字识别:集成第三方的 OCR SDK,在自动化脚本中实现对屏幕截图的文字提取。

图像处理:封装图像处理的算法库,用于对截图进行预处理、特征识别等操作。

第三方服务集成:将某个云服务的 SDK 封装为插件,在脚本中直接调用云服务的能力。

自定义算法:将专有的业务算法封装成插件,与脚本逻辑解耦,便于维护和升级。

七、注意事项

  1. 路径正确性:loadPlugin 的路径参数必须准确。使用全路径时要注意 Android 文件系统的路径规范;使用相对路径时要清楚冰狐的工作目录;使用 asset: 前缀时要确保插件已通过打包功能正确打包进 APK。

  2. 插件与脚本的版本兼容:插件更新后,调用它的脚本可能需要进行相应的调整,特别是当接口类的签名发生变化时。

  3. 性能考虑:插件的加载和对象的创建会有一定的开销,建议在脚本初始化阶段完成加载和创建,避免在循环中重复执行这些操作。

  4. 不要重复加载:如前所述,同一个插件不应被多次加载。如果需要多次使用,应复用已加载的 Plugin 对象。

八、总结

冰狐智能辅助的插件开发机制提供了一条清晰而高效的路径,让开发者能够将 Android 生态中丰富的第三方能力引入到自动化脚本中。整个体系围绕 loadPlugin 和 newObject 两个核心 API 展开,配合明确的开发规则,使得 Java 与 JavaScript 之间的交互变得简单而可靠。

无论是集成 OCR、图像处理,还是封装专有算法,插件机制都为开发者提供了充分的灵活性。理解并掌握这套机制,是充分发挥冰狐智能辅助平台能力的关键一步。

Cocos Creator 3.x右键菜单创建脚本绑定以及属性绑定 cocos creator插件 阅读详情

相关推荐

PyInstaller打包PySide6应用:从手动瘦身到自动化脚本的进阶之路

本文详细介绍了使用PyInstaller打包PySide6应用时遇到的体积臃肿问题及解决方案。从手动瘦身到自动化脚本开发,提供了精简Qt模块、移除无用插件和系统依赖的实用技巧,帮助开发者将应用体积减少60%以上,同时提升启动速度20%。文章还分享了Python实现的智能瘦身工具和最佳实践,适用于需要频繁打包的PySide6项目。

weixin_30340819的博客 481

java程序员的开发Python游戏自动化脚本(调用大漠插件)系列(一)起源

大家好,我是超可靠的小伙伴,喜欢打游戏的程序员。最近玩了个搬砖游戏火炬之光无限,也靠这个游戏搬砖挣了一两千,有兴趣的可以自己去百度或者b站科普一下。现在自己装备成型了刷大部分副本都非常轻松,但是要上班,,,就没时间去搬砖,于是就有了这么个想法,搞个脚本自己动。

月影朦胧的博客 1742

Unity自带插件内录:Unity Recorder安装使用与自动化脚本指南

在游戏开发和版本演示中,屏幕录制是高频需求。传统外部录屏工具受窗口遮挡、分辨率缩放、音频混杂等因素影响,难以还原编辑器真实渲染效果。而Unity生态内提供了官方解决方案——Unity Recorder,这是一款基于编辑器扩展的录制插件,能够直接从Game视图、Scene视图或RenderTexture采集画面帧,并同步捕获Audio Listener的音频数据,输出MP4、WebM、动态GIF或图像序列。其核心原理是绕过系统桌面层,直接读取渲染管线数据,从而保证录制内容与游戏运行逻辑严格同步。这项技术特别适

weixin_29534421的博客 138

山海Lua脚本插件

山海Lua脚本插件 【下载地址】山海Lua脚本插件 山海Lua脚本插件是一款专为开发者和用户设计的强大工具,集成了丰富的脚本功能,帮助您轻松实现自动化操作与设备管理。无论是删除、插入数组元素,还是自动去重和改变数组位置,都能高效完成。它支持挂载系统目录、改写文件权限、遍历文件夹,甚至静默安装、卸载apk。此外,还能设置输...

gitblog_06748的博客 1055

京东抢购抢茅台脚本 | Chrome插件 安装使用说明

插件介绍 正常人抢购: 等待抢购时间开始(约0.1秒) --->> 点击抢购按钮(0.3秒) --->> 购物车里面点击提交订单(1秒) 我们除去网络通讯的时间,从可以抢购到提交订单,大约1.5秒操作的时间,这个时候很多商品已经没有了,所以你抢购不到 脚本抢购: 在抢购开始前发起请求(-0.25秒) -->> 自动发起购物车请求(0.01) 脚本抢购,会在系统开始前的0.n秒前,开始发起请求,因为网络请求到服务器接受有个时间差,服务器接收到我们的请求后,基本已

洛阳泰山的博客 1538

聚焦112Gb/s SerDes芯片的AN/LT端口自协商和链路学习,评估验证高速链路的信号质量并分析调优(400/800G高速以太网互联接口,AI加速卡网络RDMA性能测试,交换背板接口性能评估)

在112G SerDes高速通道下的400G/800G高速以太网端口下,如何保障通信速率,验证SerDes的数据完整性和链路余量,自动协商(AN)和链路训练(LT)功能显得尤其重要,其在DAC、ACC、AEC铜缆连接或高速背板通信上,自动协商(AN)和链路训练(LT)的工作与否将决定高速链路传输质量的优劣。本文将系统的讨论介绍自动协商(AN)和链路训练(LT)的测试流程,其可以独立使用,也可以与teledynelecroy SierraNet M1288配合使用。

专注有线以太网性能测试--丹麦信雅纳网络(Xena Networks) 9406

LivePlugin终极指南:如何在IntelliJ中运行时编写插件免重启

🚀 LivePlugin是IntelliJ平台的革命性插件,它允许开发者在运行时直接编写和调试IntelliJ插件,无需重启IDE!这个强大的工具彻底改变了插件开发流程,让你能够快速原型化、测试和迭代你的插件创意。无论你是想自动化工作流程、集成外部工具,还是探索IntelliJ API,LivePlugin都能提供前所未有的开发体验。 ## 🌟 LivePlugin的核心优势 ### 免重

gitblog_00080的博客 326

华为2022硬件逻辑笔试题

单选题(每题两分) 1.以下关于过程赋值的描述,不正确的是() A在非阻塞性过程赋值中,使用赋值符号“< =” B赋值操作符是“=”的过程赋值是阻塞性过程赋值 C在非阻塞性过程赋值中,对目标的赋值是非阻塞的(因为时延),但可预定在将来某个时间步发生(根据时延:如果是0时延,那么在当前时间步结束) D非阻塞性过程赋值在其后所有语句执行前执行 解:D 2.芯片的功耗和下列哪种不强相关_____________。 A资源利用率 B核电压 C组合逻辑级数 D翻转率 解:A 3.下列说

weixin_44072819的博客 1万+

LivePlugin与Groovy:如何创建高效的IDE脚本和自动化工具

你是否曾经想过在IntelliJ IDEA中编写自定义插件,但又觉得传统的插件开发流程过于繁琐?LivePlugin为你提供了终极解决方案!这个强大的工具让你能够在运行时直接编写和执行IntelliJ插件,无需繁琐的编译和重启过程。通过结合Groovy脚本语言的简洁性和LivePlugin的实时性,你可以快速创建高效的IDE自动化工具和个性化脚本。 ## 什么是LivePlugin? Live

gitblog_00384的博客 384

Windows下玩转DeepSeek-R1:Ollama+Docker配置RAGFlow的3种网络调试方案

本文详细介绍了在Windows环境下使用Ollama和Docker配置RAGFlow的三种网络调试方案,帮助开发者解决本地部署AI知识库系统时的网络隔离问题。通过host.docker.internal直连、自定义Docker网桥网络和端口映射与反向代理三种方法,实现DeepSeek-R1模型与RAGFlow的高效通信,提升本地AI应用的开发效率。

weixin_28347369的博客 247

算法交易VWAP&TWAP

VWAP的一些算法模型细节参考博客地址http://blog.sina.com.cn/s/blog_ad47bc5b01014elx.html 日内交易量预测模型http://blog.sina.com.cn/s/blog_976461170102v43p.html 算法交易其实主要是用在基金公司、券商量化比较多。例如我已经选好股,要大量买入,但是单凭交易员的操作海量单而且要完

shulixu的博客 1万+

Typora插件开发:Linux系统下window.html文件路径查找指南

作为Typora插件开发者,你是否曾经遇到过这样的困境: > "我知道要安装Typora插件需要修改window.html文件,但在Linux系统下,我根本找不到这个关键文件在哪里!" window.html是Typora的核心入口文件,所有插件功能的注入都依赖于正确找到并修改这个文件。在Linux系统中,由于不同的发行版、不同的安装方式,Typora的安装路径千差万别,这让很多开发者望而却步...

gitblog_07499的博客 390

MDM主数据清洗和编码集成说明

绝大多数的企业业务系统是伴随业务发展而建设的,但随着业务发展单一系统难以支撑企业业务闭环。MDM主数据管理平台可以满足企业数据治理的需求,本文针对主数据清洗和编码集成进行梳理。...

数通畅联 3320

LivePlugin核心功能解析:如何利用运行时插件开发加速IDE定制

LivePlugin是一款革命性的IntelliJ插件,它彻底改变了传统IDE插件开发的工作流程。通过提供**运行时插件开发**能力,开发者可以在不重启IDE的情况下实时编写、测试和调试自定义功能。这种创新的**IDE定制**方式让JetBrains系列IDE的用户能够以前所未有的速度扩展开发环境功能。 ## 🚀 LivePlugin是什么?为什么它如此重要? LivePlugin是一个为I

gitblog_00187的博客 529

十二种嵌入式通信协议

嵌入式通信协议选型核心要点解析 在嵌入式系统开发中,通信协议选型直接影响项目成败。本文系统梳理了12种主流协议,从三个维度提供选型指南: 板级通信协议: I²C:双线制,适合传感器连接(温湿度、RTC等) SPI:高速全双工,适用于Flash存储、TFT屏等 UART:异步串行,常用于调试日志输出 总线通信协议: CAN:汽车电子首选,支持多主节点和硬件仲裁 LIN:低成本单线方案,适用于车窗控制等场景 RS485:工业自动化主力,最长传输距离1200米 Modbus:工业领域通用协议,支持RTU/TCP格

qq_37999850的博客 248

别再用LabelImg了!我手搓了一个C#“一站式”YOLO工具箱,标注训练推理全搞定

这个工具箱目前已经在两个小型产线项目中试用,反馈非常好。效率提升:原本需要 2 天完成的“数据准备 - 训练 - 验证”循环,现在缩短到了 2 小时。门槛降低:产线技术员经过 10 分钟培训,就能独立完成新产品的模型迭代。当然,它还有改进空间未来计划集成主动学习功能:自动筛选出置信度低的图片,推荐优先标注。支持多模型管理:方便在不同产品型号间快速切换。增加PLC 通信模块:直接在推理界面配置 IO 信号,实现真正的软硬联动。最后想说工具的本质是服务于人。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 442

Python京东预约抢购茅台脚本插件:一键预约,抢购不再难

Python京东预约抢购茅台脚本插件:一键预约,抢购不再难 【下载地址】Python京东预约抢购茅台脚本插件 这款Python脚本插件专为京东茅台预约抢购而设计,帮助用户自动化抢购流程。通过简单配置个人信息和抢购参数,脚本能在指定时间自动执行,提升抢购效率。虽然不能保证100%成功,但经过测试,效果显著。请注意,本脚本仅...

gitblog_06747的博客 568

TC3XX - MCAL知识点(三十三):基于EB Tresos配置Tc3xx的MCAL代码如何产生中心对称的三相六路发波波形

本文用于记录如何在英飞凌 tc3xx 芯片的应用开发中,借助 EB Tresos 配置工具生成的配置代码与 MCAL 源码相结合,进而实现三相六路中心对称互补的 PWM 输出效果。外部资源需求:EB Tresos23.0以上、Tasking\Hightec编译器、示波器\逻辑分析仪。

梦想技术家 1214

【前端自动化新突破】:基于模块化脚本引擎的5种实战应用场景

解决前端自动化痛点,详解基于脚本引擎的模块设计与应用。涵盖页面自动化、表单填充、数据采集等5大场景,提升开发效率。模块化架构灵活易扩展,支持动态加载与复用,值得收藏,点击了解实战细节。

AlgoPerch的博客 1028

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

OpenShell 命令行运行时:结构化输出与插件化扩展实战

命令行运行时是提升自动化脚本可维护性的关键技术,其核心原理在于将命令执行与结果处理解耦,通过结构化数据流替代传统文本解析。这种设计能显著降低跨平台差异带来的维护成本,并支持插件化扩展与上下文感知。在 DevOps、SRE 及后端开发等场景中,结构化输出与插件系统可大幅简化日志分析、批量巡检与 CI/CD 流程。OpenShell 正是这一思路的实践,它作为可编程的命令行增强层,在保留原生 shell 能力的同时,提供了统一的数据抽象与适配器机制,让脚本逻辑更干净、更可移植。

weixin_29698641的博客 295

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

不想自己搭节点?导入 ComfyUI-Workflows-ZHO 的 16 套工作流,直接出第一张图

ComfyUI-Workflows-ZHO 是一个 ComfyUI 工作流仓库:根目录平放着 16 个工作流 JSON,把 FLUX.1、SD3 Medium、Stable Cascade 等流程直接导入 ComfyUI 就能出图,不用自己拖节点连线。这篇文章带你从 clone 到出第一张图,并把每个工作流要装哪些插件、下哪些模型一次说清。 ## 盘点仓库里的 16 套工作流 先说清仓库长什么

gitblog_00985的博客 297

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ponytail插件:轻量级技能管理,让自动化不再零散

在自动化工作流日益复杂的今天,零散的脚本、命令与API调用常常让人难以维护。插件作为一种模块化扩展机制,本质是为了降低系统集成的复杂度。ponytail 正是一款聚焦“技能管理”的轻量级插件,它通过技能清单、回调函数与运行时三层结构,将分散的自动化能力统一注册到同一入口,并内置参数校验与冲突检测,大幅提升工程可维护性。无论是智能家居的统一控制,还是本地命令行工具集的集中管理,ponytail 都能帮助开发者以更低成本实现技能复用与共享。对正在积累自动化技能包、希望获得清晰调用边界的团队与个人而言,它提供了一

weixin_34112399的博客 272

Sandboxie自动化插件开发:扩展脚本框架功能

你是否在使用Sandboxie时遇到以下问题:需要频繁手动操作沙箱、重复配置相同规则、无法与外部工具联动?传统使用方式下,这些场景往往需要人工干预,效率低下且易出错。本文将系统讲解如何通过Sandboxie的API和插件框架实现自动化扩展,帮助开发者构建自定义工作流。 读完本文你将获得: - 掌握Sandboxie API核心接口使用方法 - 学会开发插件实现自动化任务 - 理解插件与主程序的通...

gitblog_00295的博客 1161

【免费下载】 Python游戏脚本开发入门:大漠插件调用——自动化游戏世界的钥匙

Python游戏脚本开发入门:大漠插件调用——自动化游戏世界的钥匙 【下载地址】Python游戏脚本开发入门大漠插件调用 本资源文件是《Python游戏脚本开发入门》系列的第一部分,主要介绍如何使用Python调用大漠插件进行游戏脚本开发。大漠插件是一个集前后台、文字识别、图色、键鼠、窗口、内存、DX、Call等功能于一...

gitblog_06507的博客 1304

darktable Lua脚本开发:自动化工作流程与插件扩展

作为一名专业摄影师,你是否曾为重复性的图片处理任务感到困扰?每天需要批量导出特定尺寸的照片、自动应用预设风格、或者根据EXIF信息智能分类图片?darktable的Lua脚本功能正是为解决这些痛点而生。 darktable Lua API提供了完整的程序化控制能力,让你能够: - ???? 自动化重复性工作流程 - ???? 扩展darktable的核心功能 - ???? 批量处理成千上万张图片 - ????...

gitblog_00306的博客 781

Agent流程自动化适合哪些重复性业务场景?

Agent流程自动化适合处理的业务。它并不是把所有工作交给一个机器人,而是将任务拆解、信息获取、判断、调用系统和结果反馈连接起来。对于涉及复杂授权、重大经营决策或高度依赖人工经验的事项,通常更适合采用“Agent辅助+人工审核”。

yunshangxiantu的博客 197
上一篇: 软件的系统测试及其应用
下一篇: 微服务架构治理及其应用
ai_coder_ai
博客等级 码龄1年 39粉丝 256原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值