App 一页没点,我为什么先花三步检查计划、环境和安装?

Spark本地开发环境搭建:隔离、验证与可扩展的三步闭环法 Apache Spark 是一个分布式计算引擎,其本地开发环境并非简单的软件安装任务,而是一个涉及JDK版本兼容性、Hadoop二进制绑定、Python-JVM通信协议(Py4J)、类路径隔离与配置驱动扩展的系统性工程。理解 Spark 运行时原理——如 Catalyst 优化器触发条件、local[*] 模式下的 Driver 网络绑定机制、以及 spark-sql 模块的依赖树完整性——是规避 ClassNotFoundException、NoSuchMethodError 和 Py4J 通信失败的关键 阅读详情

一次 ApiDemos APP 测试的计划评审、环境基线与安装准入

设备一度显示 offline,Appium 的端口没有监听,准备覆盖安装时 ADB 又突然找不到手机。

看起来像连续出了三次事故。

但在这篇文章结束前,我依然不能说 App 有 Bug。原因很简单:这三次异常都发生在真正的 UI 功能测试之前。

这次测试的是 Android ApiDemos 6.0.15。以前我总觉得 APP 测试从打开页面、点击按钮、检查结果开始。真正走完前三步才发现,页面还没点,测试已经开始了。

前三步要解决的不是“功能对不对”,而是三个更基础的问题:

  1. 测的到底是不是约定的那个包?

  2. 设备和工具链是否真的可用?

  3. 这个 APK 是否具备进入 UI 测试的安装条件?

只有这三个答案可信,后面的功能结果才值得相信。

第一步:计划评审不是写文档,而是关闭关键决策

第一步没有连接设备,也没有运行 Appium,只做计划评审与决策关闭。

听起来很“虚”,实际上它决定了后面每个结果能不能被解释。

先固定被测对象

候选 APK 大小为 6,521,237 字节,SHA-256 是:

3D01868BDF3E2248EF94D30A49F81BE9B8140C9A6F398C4E22B2CF109101ABA5

SHA-256 可以理解为文件的指纹。文件只要发生变化,指纹就会跟着变化。

为什么不能只写一句“测试最新 APK”?因为“最新”会变。今天测试的文件和明天交付的文件如果不是同一个,哪怕所有用例都通过,也无法证明交付包通过了测试。

本轮还记录了源工程版本和已知构建差异,但 APK 与源提交的可重现绑定没有独立验证。因此,后续结论始终以这一个 APK 指纹为准,没有把未验证的源码绑定写成事实。

再固定设备和范围

本轮临时范围只有一台设备:

  • HONOR ADT-AN00;

  • Android 14 / API 34;

  • 1080 x 2388;

  • 480 dpi。

这意味着后面的测试结果只能代表这台设备和这个系统版本,不能直接扩写成“Android 兼容性通过”。

功能范围也需要提前冻结。哪些顶层入口属于 P0,哪些子菜单不在本轮范围内,都必须在运行前写清楚。否则测试结束后再挑选结果,很容易把没测的内容悄悄算进通过范围。

最后确认授权边界

本轮明确不执行:

  • 卸载应用;

  • 清除应用数据;

  • 重置权限。

这些操作会改变设备状态,而且部分结果难以恢复。测试人员不能因为“这样更方便构造场景”,就默认拥有修改真实设备状态的权限。


第一步最终关闭了四类决策:APK 来源和责任人、设备范围、功能范围、破坏性操作边界。

到这里我学到的第一件事是:测试计划不是待办清单,而是一份证据合同。它规定测什么、怎么判定,以及哪些话不能说。

第二步:环境基线不是准备工作,它本身就是测试

第二步开始核对 APK、设备和工具链,但仍然没有创建 Appium UI 会话。

先证明手机里的包就是候选包

设备已经安装 io.appium.android.apis。从设备取回 base.apk 的 SHA-256 后,它与本地候选 APK 完全一致。

同时确认了:

  • versionCode=41;

  • versionName=6.0.15;

  • minSdk=26;

  • targetSdk=33;

  • Launcher Activity 为 io.appium.android.apis/.ApiDemos。

这一步解决的是身份问题:测试设备上运行的,确实是第一步批准的候选构建。

设备在线,不是看见序列号就够了

初始检查时,目标设备显示为 offline。

这说明 ADB 知道有这样一台设备,却无法正常与它通信。执行针对目标 UDID 的重连后,设备短暂从列表消失,5 秒后恢复为 device。

offline 和 device 只有一个单词的区别,但对自动化测试来说是两种完全不同的状态。前者不能作为执行前提,后者才表示 ADB 通道可用。

恢复后核对到设备型号、Android 版本、分辨率、密度和锁屏状态,设备基线才算完整。

服务启动了,不等于服务已经就绪

Appium 初始端口没有监听。启动服务后,UiAutomator2 冷加载耗时 28.595 秒,外层命令先等待超时,但服务随后成功监听,健康接口返回:

ready=true

如果只保留“命令超时”这一行,很容易把它判断成环境失败;如果只看最终健康状态,又会漏掉启动等待口径偏短的问题。

正确的记录方式是同时保留过程和恢复结果:外层等待曾超时,这是执行事件;服务最终健康,这是准入证据。

本机工具链也被逐项确认,依赖锁定检查显示无需变更。pytest 最终收集到 4 条基线测试,耗时 0.05 秒。

注意,这里只是证明“配置可以加载、用例可以被发现”,并没有证明 4 条 UI 用例可以通过。

第二步让我意识到:环境问题最危险的地方,不是它会让测试失败,而是它会伪装成脚本问题或产品问题。

第三步:安装成功,只能证明安装准入通过

第三步终于开始检查 APK 是否能进入安装和启动阶段。

本轮允许同版本覆盖安装,但仍然不允许卸载、清数和权限重置。

安装前先检查包,而不是直接执行命令

安装前依次核对:

  • Manifest 中的包名、版本、SDK 和启动 Activity;

  • APK 签名完整性;

  • 设备 API 与 minSdk 的关系;

  • APK 是否包含原生库及设备 ABI 是否匹配;

  • /data 分区可用空间。

apksigner verify 返回成功,APK Signature Scheme v2 验证通过。签名者使用 Android Debug 证书,它与当前批准的测试候选一致,但不能代表正式发布签名。

设备 API 34 满足 minSdk=26。APK 没有 /lib/ 原生库,因此本轮没有发现原生 ABI 阻断。可用存储也远大于 6,521,237 字节的 APK 大小。

这些检查像登机前确认机票、证件和行李。直接执行安装命令,也许能成功;但失败时,你很难立即知道是签名、SDK、ABI、空间,还是设备连接出了问题。

第一次安装还没开始,设备先消失了

准备覆盖安装时,设备从 ADB 列表消失,安装前状态读取失败。

关键点是:安装命令尚未执行,应用也没有被修改。

所以这次事件应该归类为 USB / ADB 环境波动,而不是“安装失败”,更不是产品缺陷。

设备恢复后连续 3 次返回 device,随后重新执行:

adb install -r <candidate-apk>

命令在 834 毫秒后返回 Success。

覆盖安装后,还要确认没有换包

安装成功提示只是第一层证据。覆盖安装后再次核对:

  • 设备端 APK 指纹仍与候选一致;

  • 版本保持 41 / 6.0.15;

  • 数据目录未变化;

  • 首次安装时间未变化;

  • 25 条权限状态摘要保持一致。

这里没有检查应用私有数据的具体内容,所以“私有数据完整保持”仍是 not verified,不能从目录和摘要没变直接推导出来。

随后使用 am start -W -S 冷启动应用,返回 Status: ok,启动 Activity 为 .ApiDemos,总耗时 730 毫秒。对启动后目标进程日志采样 300 行,没有匹配到 FATAL EXCEPTION、ANR 或进程死亡。

这个结论也有严格边界:它只覆盖这一次冷启动和这 300 行采样窗口,不等于应用经过长时间运行仍然稳定。

为什么安装准入通过,安装专项却没有全通过?

因为本轮只执行了被授权的非破坏性范围。

以下项目仍然没有被验证:

  • 全新安装:blocked,因为不允许卸载或清数;

  • 历史版本升级和卸载重装:blocked,因为没有批准的历史 APK,也不允许卸载;

  • 损坏包、签名不一致、空间不足、安装中断:not verified;

  • 多设备安装:not verified。

因此,准确结论是:当前候选 APK 在这台设备上的同版本覆盖安装准入通过,可以进入下一阶段。

而不是:安装测试全部通过。

这两个说法只差几个字,覆盖范围却完全不同。

三步走完后,我重新理解了 APP 测试

前三步结束时,我还没有点击一个业务页面,却已经完成了三件非常重要的事:

  1. 用 APK 指纹、设备范围和授权边界固定了测试对象;

  2. 用 ADB、Appium 健康状态和依赖检查证明环境可执行;

  3. 用包信息、签名、SDK、ABI、空间、覆盖安装和冷启动证明候选包具备进入 UI 测试的条件。

期间出现的设备离线、服务等待超时和 ADB 瞬时消失,都被保留了下来,但没有被错误地包装成产品缺陷。

这就是我在前三步学到的核心方法:

先确认测试是否有资格开始,再讨论 App 的功能是否正确。

页面上的一次点击很直观,计划、环境和包准入却决定了这次点击的结果能不能被相信。

真正的 APP 测试,不是从点击开始的。

Django生产部署最佳实践:App Platform零配置上线指南 Django作为Python生态最成熟的全栈Web框架,其生产部署长期面临环境配置复杂、静态文件托管混乱、数据库连接不稳定等共性挑战。本质在于WSGI应用与PaaS平台间的运行契约不匹配——传统VPS需手动编排Nginx+Gunicorn+PostgreSQL,而Serverless平台(如Vercel)无法支撑长连接与进程级缓存。App Platform通过标准化构建流程、环境变量驱动配置、静态资源分离托管及健康检查自定义机制,将部署抽象为可验证的四层契约:代码即配置、单一入口点、静态资源分离、健康检查自 阅读详情

相关推荐

Codex CLI与App本质区别:可编程协作者vs受控沙盒环境

Codex CLI和Codex App并非同类工具的简单对比,而是面向不同工程范式的底层设计产物。CLI遵循Unix哲学,作为无状态、可组合的终端协作者,天然适配自动化流水线与脚本集成;App则构建于安全沙盒之上,以图形界面和策略管控降低使用门槛,强调可控性与团队协作。其技术价值体现在对CI/CD、IDE嵌入、私有模型(如DeepSeek)及企业网关兼容等场景的差异化支撑。当开发者搜索‘codex cli安装’或‘codex app windows配置’时,真正需要判断的是工作流中哪一环需被接管——是无人值

circularr9834的博客 457

【入门级】Pycharm安装教程及环境配置_pycharm配置python运行环境

安装Pycharm之前,建议大家先把Python安装好哈。第一步,下载Pycharm安装包【----帮助Python学习,以下所有学习资料文末免费领!----】直接下载社区版就行哈。下载好之后,双击安装包,进行安装。第二步,点击【NEXT】第三步,保持默认安装路径,直接点击【NEXT】第四步,这里建议全部勾选,然后点击【NEXT】第五步,点击【Install】即可耐心等待进度条。这里可能要等待一段时间,尽量保持电脑不动哈。这里直接点击【Finish】即可。

m0_59236127的博客 3029

Android车载应用开发:Kotlin与Automotive OS深度实践

Android Automotive OS(AAOS)是Google专为车辆设计的操作系统,直接运行于车机硬件,提供完整的车载信息娱乐系统(IVI)。与Android Auto不同,AAOS允许开发者深度集成车辆硬件功能,如空调控制和传感器数据读取,同时遵循严格的驾驶安全规范。Kotlin作为开发语言,具备空安全设计、扩展函数和协程支持等优势,简化了开发流程。开发环境配置包括Android Studio、AAOS模拟器和Gradle配置,核心组件如CarAppService、Screen与模板系统,以及车辆

时小雨的专栏 3437

【入门级】Pycharm安装教程及环境配置

安装Pycharm之前,建议大家先把Python安装好哈。第一步,下载Pycharm安装包【----帮助Python学习,以下所有学习资料文末免费领!----】直接下载社区版就行哈。下载好之后,双击安装包,进行安装。第二步,点击【NEXT】第三步,保持默认安装路径,直接点击【NEXT】第四步,这里建议全部勾选,然后点击【NEXT】第五步,点击【Install】即可耐心等待进度条。这里可能要等待一段时间,尽量保持电脑不动哈。这里直接点击【Finish】即可。

xzp740813的博客 1086

告别手绘!用Aseprite+Unity Tilemap,从AI生成到2D游戏地图的保姆级搭建流程

本文详细介绍了如何利用Aseprite和Unity Tilemap从AI生成素材到搭建2D游戏地图的完整流程。涵盖AI生成素材的预处理、图层管理、动画制作,以及Unity中的Tilemap系统配置和性能优化技巧,帮助开发者高效创建像素风游戏地图。

weixin_29015483的博客 570

h5支付不能打开支付宝 ios_iOS支付宝H5支付无法返回APP解决方案

本文前大段在讲楼主是如何解决这个问题的,以及中间遇到的麻烦。赶时间的同学可以直接看最后的 最终解决方案。在讨论之前,我们先看看官方文档上的一句话:注意:在iOS系统中,唤起支付宝App支付完成后,不会自动回到浏览器或商户APP。用户可手工切回到浏览器或商户APP;支付宝H5收银台会自动跳转回商户return_url指定的页面。what? 官方直接跟我们说GG了?楼主不甘心,还是想尝试一下。借鉴之前...

weixin_39864101的博客 849

Asspp安装全攻略:从零开始配置你的多账户App Store环境

Asspp(GitHub 加速计划)是一款专为多账户生态系统设计的App Store工具,它能够帮助用户高效管理多个应用商店账户,实现应用的快速下载与安装。本教程将带你从零开始,完成Asspp的安装与配置,轻松打造属于你的多账户应用管理中心。 ## 准备工作:了解Asspp的核心功能 在开始安装前,让我们先了解一下Asspp的主要功能。Asspp提供了直观的用户界面,支持多账户管理、应用搜索、

gitblog_00006的博客 391

最新扣子(coze)案例:在coze上用DeepSeek+私有数据库、知识库,创建你的专属智能体

Gartner预测,到2026年,70%的企业将通过Al知识库实现「组织记忆外化」。数字化时代,数据已成为企业发展的核心资产。我们通过人工智能将知识库从“静态存储"升级为“智能服务”。让"沉睡宝藏"焕发新生,助力企业突破数据困局。

weixin_72689845的博客 2158

App-Installer:无需电脑,3步完成iOS应用IPA文件安装的终极指南

App-Installer是一款革命性的iOS设备端IPA安装工具,彻底改变了传统依赖电脑的安装方式。对于iOS开发者和技术爱好者而言,这款工具提供了前所未有的便利性,让你能够在iPhone或iPad上直接安装第三方应用,无需连接电脑或使用复杂的命令行工具。 ## 📱 为什么你需要App-Installer? 传统iOS应用安装面临三大痛点:必须依赖电脑、签名管理复杂、系统兼容性差。App-

gitblog_00594的博客 513

从d、q轴电流到电机性能:FOC控制中角度偏移的实战影响与调试策略

本文深入探讨了永磁同步电机FOC控制中d、q轴电流与角度偏移对电机性能的影响及调试策略。通过分析角度偏移导致的效率下降、电流异常等问题,提供了实用的四步调试法和参数优化技巧,帮助工程师有效提升电机控制精度和效率。

weixin_29264201的博客 291

从技术债红线到系统治理:透视 SAP Clean Core 中的 Level D

SAP推出的Clean Core分级体系将扩展风险划分为A到D四个等级,其中Level D代表最高风险类别,涉及直接修改标准代码、隐式增强、使用noAPI对象等不被推荐的做法。这些做法虽然短期见效快,但会带来升级冲突、数据完整性风险等长期问题。SAP强调治理重点不是完全消除经典ABAP,而是优先清理Level D对象,逐步向稳定接口迁移。典型案例显示,依赖内部细节的扩展往往在系统升级或云迁移时集中暴露出问题。企业应通过工具链持续监控Level D占比,将其纳入技术债管理范畴。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1053

certificate-photo 完整部署指南:云环境、数据库集合、环境变量与28个云函数上线的检查清单

certificate-photo 是一个**生成证件照的微信云开发小程序**,集成了 AI 抠图、换装换发型、图片合成、冲印排版等能力。对新手来说,把整套小程序跑起来最难的往往不是写代码,而是**微信小程序云开发部署**的完整流程:云环境怎么建、数据库集合怎么配、环境变量从哪填、28 个云函数怎么逐个上线。本文整理了一份从零到一的可执行部署指南,并附上最终上线前的逐项检查清单,照着做就能少踩坑。

gitblog_00786的博客 1005

Python爬虫教程:微博热点话题抓取与社交媒体分析

微博是中国最大的社交媒体平台之一,拥有海量的用户和丰富的讨论话题。通过爬取微博的热门话题和讨论内容,我们可以深入分析用户的兴趣、舆论走势、社会情绪等。通过爬取微博的热点话题和讨论内容,我们可以获得关于当前热门话题的宝贵数据,并基于这些数据进行多种社交媒体分析。本文将通过Python爬虫技术,详细介绍如何抓取微博上的热门话题、话题讨论内容,并进行社交媒体分析。希望本文为你提供了一个全面的微博数据抓取与分析的指南,帮助你在社交媒体数据分析的道路上迈出坚实的第一步。微博上的一些页面内容是静态的,可以直接通过。

2201_76125261的博客 586

微信插件管理终极解决方案:三步快速修复功能异常

您是否正在为微信插件频繁崩溃、功能失效而困扰?本文将为您提供一套完整的微信插件故障修复方案,通过简单三步操作彻底解决插件兼容性问题。🛠️ ## 为什么您的微信插件需要重新部署? 微信插件在使用过程中可能出现多种问题,主要包括: - **版本冲突**:插件与微信主程序版本不匹配 - **文件损坏**:安装过程中文件复制不完整 - **权限问题**:系统安全设置阻止插件加载 - **残留影响*

gitblog_00276的博客 411

23、资产分散化与有效前沿:投资组合优化的核心策略

本文深入探讨了现代投资组合理论的核心概念,包括分散投资的重要性、均值-方差优化框架以及有效前沿的构建与应用。通过案例分析和数学模型,阐述了如何通过科学方法降低投资组合风险并实现最优风险收益权衡。文章还介绍了实际应用中的求解方法与决策流程,为投资者提供系统的投资组合优化指导。

cc789的博客 108

深度学习工具包 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")

Clawdbot汉化版实战案例:用定时任务每天9点自动推送天气+工作计划到微信

本文介绍了如何在星图GPU平台上自动化部署Clawdbot 汉化版 增加企业微信入口镜像,快速构建私有化AI助理服务。基于该平台,用户可一键完成环境配置与服务启动,典型应用场景为每天9点自动向企业微信推送定制化日报(含本地天气简报与工作计划),实现免API、离线可用、数据可控的智能办公自动化。

weixin_36197669的博客 641

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

iOS应用安装神器App Installer:3分钟快速上手终极指南

App Installer是一款专为iOS设备设计的应用安装工具,让你能够轻松安装已签名的IPA文件,无需依赖App Store。无论你是开发者需要测试应用,还是普通用户想要安装第三方应用,这款工具都能提供便捷的解决方案。通过简单的URL链接输入,App Installer就能自动下载、签名并安装应用到你的设备上,真正实现自由安装iOS应用的梦想。 ## 为什么你需要App Installer?

gitblog_00916的博客 345

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

App Installer终极指南:如何在iOS设备上直接安装IPA文件

App Installer是一款革命性的iOS应用安装工具,它彻底改变了传统IPA文件安装方式,让您无需电脑即可直接在iOS设备上安装已签名的应用。无论是开发者测试应用还是普通用户安装第三方应用,这款工具都提供了简单高效的解决方案。 ## 📱 iOS应用安装的痛点与挑战 传统的iOS应用安装方式存在诸多不便: 1. **设备依赖问题**:需要连接电脑使用iTunes或Xcode 2. **

gitblog_00672的博客 476
上一篇: Skill安装榜第一的 Skill,竟然只是帮 AI「找 Skill」?
下一篇: Terra Light,还是 Luna Max?别只问“谁更聪明”
KeepJoy
博客等级 码龄2年 0粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值