如何实现Django规模化:进阶教程

企业AI Agent规模化治理:从LLM、RAG到Harness层的工程实践 在大语言模型(LLM)和检索增强生成(RAG)技术推动下,AI Agent正从概念验证走向企业级应用。其核心原理在于利用LLM的认知能力,结合RAG的外部知识库,通过规划决策调用工具完成复杂任务。然而,当企业从单点试点转向规模化部署时,面临安全、运维、成本与协作等多重挑战,其技术价值在于确保AI应用稳定、可控、高效。这正是Harness层(治理平台)的关键应用场景,它如同Kubernetes之于容器,为分散的AI Agent提供统一托管、观测与安全保障,解决权限混乱、成本不可控、安全审计缺失等痛点。通过引入 阅读详情

提供:ZStack云计算

系列教程

本教程为Django规模化系列三篇中的第三篇。

导言

在之前的教程中,我们已经将Django部署在Droplet当中。当站点流量提升时,我们则可通过寻找瓶颈以确定问题并加以修复。然而,如果流量持续增长,我们该如何进一步解决问题?

本文主要面向Ubuntu 12.04系统,但大家完全可以将核心思路应用在其它Linux版本当中。

如果大家使用Apache,则推荐各位参阅webserver优化一文。如果大家使用Nginx,这些提示也同样适用。

将一切纳入缓存

如果大家创建了CMS以管理站点,那么应该能够实现比较积极的缓存策略。我个人倾向使用Varnish,这套前端缓存方案适用于Apache或Nginx。如果符合这一情况,推荐大家参阅Apache教程以及Nginx教程(是的,Nginx教程中探讨的是PHP,但也适用于Django)。

除非精心配置,否则Varnish的缺点在于其会将整套站点全部纳入缓存。举例来说,如果大家的站点中存在大量动态内容,那么Varnish的这种缓存策略可能引发错误。这意味着当A用户将某项货品加入购物车,B用户查看到的仍是缓存中的结果,意味着其能够将已经被A购买的货品同样加入购物车——这样显然会带来问题。

另一项弊端在于,Django在默认情况下会强制从缓存内容中读取上游缓存,这可能导致冲突并引发反常行为。

但好消息是,如今Django也拥有了自己的缓存框架,其拥有以下两项突出优势:

  1. 其能够提升应用程序的缓存友好度,从而更好地同Varnish相配合(如果大家选择使用Varnish)。
  2. 允许用户控制对哪些站点组成部分进行缓存处理。

如果大家使用的Droplet配置较低,则建议各位使用数据库缓存机制。其更易启用且不会带来额外的服务器进程。如果大家的内存量比较充裕,则可选择memcached以实现理想的缓存后端。今天的教程将着重介绍数据库缓存。

首先为缓存创建一套数据库表。在本示例中,我们的表名为“cache_table”:

python manage.py createcachetable cache_table

现在编辑settings.py文件并添加以下行进行缓存配置:

CACHES = {
'default': {
    'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
    'LOCATION': 'cache_table',
}
}

大家可以参阅说明文件以了解更多配置选项。我个人建议大家多多关注其中的TIMEOUT与CULL_FREQUENCY选项。

现在大家需要决定将哪些内容纳入缓存。如果各位只希望确保站点与Varnish顺利协作,则请参阅per-site缓存配置一文。不过这部分内容没什么新鲜,所以下面一起聊聊per-view缓存。

假设我们拥有一套购物车产品页面,其变更极少且动态程度不高。另外,假定我们计划对product_detail(请求product_id)进行缓存处理。

这时大家可以使用简单的decorator实现缓存:

from django.views.decorators.cache import cache_page

@cache_page(60 * 60)
def product_detail(request, product_id):
...

其负责对60分钟内的视图进行缓存(60秒 x 60分钟)。

另外,我推荐大家参阅几项重要提示一文。其中一项重要功能在于根据标题头进行分类。如果大家的站点需要被翻译成多种语言,或者打算根据不同浏览器版本提供不同内容,这篇说明将很有帮助。

如何处理频繁变更的内容?

如果大家构建的是半动态站点,即应用需要不断接收频繁刷新的评论或数据,那么缓存机制的使用就很有说道了。

首先确定是否全部视图都能够进行主动缓存,而后再着手进行缓存。

其次,确定静态内容的容错时间以确保用户不会因缓存机制而访问到过期数据。例如,某站点的活跃评论容错能力在1到5分钟之间,那么缓存页面的时长也应设为同样水平。

大家可能想象不到——事实上仅仅10秒的缓存周期也能够起到良好的作用。在多数情况下,繁忙的站点往往会由于特定页面的访问量激增而面临过载。

如果有10000名用户在一分钟内访问站点中的某一页面,则意味着服务器需要将全部查询同时发送至数据库。这时,如果我们将缓存时长设定为10秒,则意味着该页面的每分钟查询次数仅为6次——无论并发访问强度有多大。如此一来,任何服务器都能轻松应对这样的流量。

电子商务站点往往需要谨慎地处理会话数据。这时大家应当考虑标题头分类选项是否适用,毕竟创新才是实现成功的最佳途径!

站点往往会利用Ajax支持全部HTML页面中的静态内容并载入per-user会话信息。立足于电商站点,用户通常不会注意到其购物车需要5秒钟才能载入完成——毕竟当前页面还有很多其它内容供他们浏览。

提供静态内容

Django的内置开发服务器拥有出色的静态内容提供能力。大多数Django站点都会利用其提供静态内容。

但事实上,除非需要控制对内容的访问,否则大家应该尽可能尝试其它方式。

  • 动态生成CSS - 这种情况下请使用Grunt或者Less 在部署前构建CSS。如果需要在服务器上周期性生成CSS,则可使用后台任务来实现。
  • 验证用户访问 - 是的,这种情况适合使用Django。
  • 其它情况 - 我们应当配置静态内容以将其托管在Web服务器之上。

这里推荐大家参阅静态文件说明文档。如果大家懒得查看,我将其中的要点总结如下:

在本地开发设备上,向“settings.py”文件添加以下行:

STATIC_ROOT = os.path.join(BASE_DIR, "static")

而后运行manage.py命令:

python manage.py collectstatic

现在大家会在项目root目录中发现一个名为“static”的文件夹,其中包含大量静态文件,例如CSS与JavaScript。特别是在已经启用了admin app的情况下。

要使用这些文件,大家需要配置Django以确保其了解在哪里找到这些文件。在settings.py文件夹中,我们需要进行以下配置:

STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)

现在如果大家运行开发者服务器并查看admin区域内的任意页面源,则会看到来自/static/admin/css/的CSS文件。

现在,在部署应用程序时,我们可以通过将Apache或Nginx直接指向这些文件来确保其交付以/static/开头的各文件。

如果大家的应用部署在/src/myapp/,则会生成一个名为/src/myapp/static/admin/css/base.css的文件,因此以如下方式配置Web服务器:

Apache:

Alias /static/ "/srv/myapp/static/"

Nginx:

server {
...
location /static/ {
    alias /srv/myapp/static/;
}
}

在这两种情况下,大家可以将/static/ URL指向磁盘驱动器上应对的文件位置。这样,Apache与Nginx就能够以等同于Django的速度提供这些内容。

使用uWSGI

如果希望快速发布一套站点或者实现最佳性能,我会使用Apache的mod_wsgi。

uWSGI属于一项服务器进程,其能够在Web服务器之外运行我们的应用程序。在使用Apache时,大家需要安装以下软件包:

sudo apt-get install uwsgi uwsgi-plugin-python uwsgi-plugin-cgi

如果大家利用Apache作为Web服务器,则需要安装:

sudo apt-get install libapache2-mod-uwsgi

完成之后,大家会注意到两个用于配置的新文件夹:

/etc/uwsgi/apps-available与/etc/uwsgi/apps-enabled,其与虚拟主机上的Apache或Nginx配置相同。

如果需要创建一个新应用,大家可以向/etc/uwsgi/apps-available中添加一个新的配置文件,而后创建一条由apps-enabled指向它的symlink。

假设大家创建了一个名为newproject的新项目,并将其保存在/srv/newproject位置处。由于其属于典型的Django项目,/srv/newproject/newproject/下将生成一个settings.py文件。

创建一个名为`/etc/uwsgi/apps-available/newproject.ini的新文件,并将其内容编辑为:

[uwsgi]
touch-reload = /tmp/newproject
socket = 127.0.0.1:3031
workers = 2
chdir = /srv/newproject
env = DJANGO_SETTINGS_MODULE=newproject.settings
module = django.core.handlers.wsgi:WSGIHander()

现在创建一个名为/tmp/newproject的空文件:

touch /tmp/newproject

现在通过将该文件链至apps-enabled实现应用激活:

sudo ln -s /etc/uwsgi/apps-available/newproject.ini /etc/uwsgi/apps-enabled/newproject.ini

而后重启uWSGI:

sudo service uwsgi restart

如果大家检查“ps ax”的输出结果,就会发现多个与应用相关的进程正在运行当中。

请注意,如果大家在同一服务器上运行多款应用,则需要确保每款应用接入不同的端口。

另外,在对应用进行更新时,确保同时对/tmp/newproject文件与uWSGI进行重载。

另外,大家可以随时查看/var/log/uwsgi/app/newproject.log以了解运行及错误信息。

Apache配置

如果大家正在使用mod_wsgi,到这里请将其禁用并启用mod_uwsgi。这项操作可能造成错误,因此确保首先在测试服务器上尝试,直到找到正确的配置方式。

sudo a2dismod wsgi
sudo a2enmod uwsgi

现在对应用进行配置更新。在apache config中应该存在以下行:

WSGIScriptAlias / /srv/newproject/newproject.wsgi

将其更新为:

SetHandler uwsgi-handler
uWSGISocket 127.0.0.1:3031

现在重载Apache配置:

sudo service apache2 reload

Nginx配置

在服务器配置文件中,我们需要利用以下内容替换现有wsgi指令:

uwsgi_pass      127.0.0.1:3031;
include         uwsgi_params;
uwsgi_param     UWSGI_SCHEME $scheme;

就是这么简单!

uWSGI的优势

uWSGI的重要优势之一就是允许我们限定应用程序在内存中的运行次数。如果大家前面提到的配置,则内存中通常存在1个父进程与2个worker。如果大家需要更多worker,则可在.ini文件中进行编辑以增加“workers”的数量。而后使用“sudo service uwsgi reload”命令以重载uWSGI。

在增加进程数量之前,请考虑可供使用的服务器内存是否充足。相较于mod_wsgi,使用mod_uwsgi能够降低内存使用量。另外请关注uWSGI worker的大小,其在应用使用过程中可能出现体积膨胀。这种情况与内存泄露无关,单纯是因为内存内数据集过小。

最大程度提升利用率

在应用程序运行一段时间之后,检查服务器的内存使用量。

使用free -m命令以查看缓冲区/缓存与应用所使用的实际内存量。其中的关键值在于“free”列顶端的数字。在理想情况下,高强度服务器几乎会用掉全部内存。

如果大家发现仍有内存余量但站点速度开始变慢,则应深入检查是否存在其它问题。

一般来讲,大家会发现进程在等待MySQL的响应。这意味着我们需要为数据库分配更多系统内存。这种情况在默认设置下较为常见,因为MySQL会采取较为保守的内存分配策略。

另外,也有可能是分配给磁盘缓存的内存容量太低。是否存在不必要的进程在占用内存?在默认情况下,Linux会尽可能为磁盘缓存分配更多内存,并在应用需要内存时及时将其释放。

在理想状态下,VPS环境应该永远不会出现内存限制,所有只读资产全部存在于缓存当中。因此,请尽量去掉不必要的后台进程。

总结

到这里,大家应该已经了解了与缓存相关的各类知识,包括利用Varnish进行全站缓存以及立足于per-view将设置纳入缓存。

另外,也需要确保静态文件由Web服务器提供——而非Django。

大家也掌握了如何利用uWSGI将Djngo应用运行在Web服务器进程之外,从而实现性能提升。(在这里,推荐大家参阅如何实现卓越Apache/uWSGI一文。)

最后,我们探讨了如何将尽可能多的内存分配给服务器应用以提高资源利用率。

本文来源自DigitalOcean Community。英文原文:How to Scale Django: Beyond the Basics By Matthew Nuzum

翻译:diradw

基于Django与Python构建开源Web漏洞扫描系统:从原理到实战 Web漏洞扫描是网络安全领域的基础实践,其核心原理是通过自动化发送特定构造的HTTP请求,分析服务器响应内容,从而识别SQL注入、XSS等常见安全风险。这项技术将人工渗透测试流程标准化、规模化,极大提升了安全评估效率,广泛应用于企业安全自检、渗透测试及安全研究等场景。本文聚焦于如何利用Django框架与Python生态,从零构建一个开源、透明的漏洞扫描系统。通过剖析扫描引擎的插件化设计、异步任务调度及ORM数据管理,并结合SQL注入检测等具体实现,系统阐释了如何将安全理论转化为可运行的工程实践,为理解漏洞扫 阅读详情

相关推荐

DisModSetup.exe

dismod2 软件通过“数据集”窗口的“选择”选项卡,您可以从字母列表中选择特定的数据集。 显示的列表可能是集合中包含的数据集的子集,具体取决于您设置的条件。 选中后,您可以打开和关闭数据集,并访问数据集的属性,其注释,删除或删除它,或者压缩并修复关联的数据库文件。 通过数据集窗口的“选择”选项卡可以访问“选择”子窗口。 有关更多信息,请单击下面的图片中的各个项目。

Django从入门到精通(一)

venv,Python官方用于创建虚拟环境的工具。virtualenv 【推荐】操作第一步:pip安装virtualenv第二步:在D:\study\python\envs创建虚拟环境注意:crm是我们的虚拟环境名,随便起。第三步:激活虚拟环境activate第四步:虚拟环境中安装Django包第五步:创建django项目注意:这里的crm是项目名。第六步:退出虚拟环境deactivate当在settings.py中设置http://127.0.0.1:8000/login/ 成功。

qq_38196449的博客 8369

TSC条码打印机C#例程(tsclib.dll调用) 【转】

//----program.cs using System;using System.Collections.Generic;using System.Windows.Forms; using System.Runtime.InteropServices;public class TSCLIB_DLL{[DllImport("TSCLIB.dll", EntryPoint = "abou...

weixin_33843947的博客 2443

Django基础教程

一、Django是什么? Django 是用 Python 开发的一个免费开源的 Web 框架,可以用于快速搭建高性能、优雅的网站,Django 提供了许多网站后台开发经常用到的模块,使开发者能够专注于业务部分。 二、MVC设计模式 在Web开发领域有一个著名的设计模式 ---- MVC,而Django的设计模式是MTV M:Model模型,和数据库进行交互 V:View视图,产生html页面 C:Controller,控制器接收请求,进行处理,与M和V进行交互,返回应答 三、MTV设计模式 M:M

weixin_45579930的博客 1万+

“开宝五子棋陪练”-首款开放智能的五子棋习题练习安卓应用

使用Kotlin语言以及Jetpack Compose UI库开发,主要就是写Composable函数,显示棋盘、棋子和一些按钮,响应用户的点击和滑动操作,以及保存和恢复数据。但我针对本应用是用于做题的特殊需求,对该算法库做了一个简单的JNI层封装,方便UI前端Kotlin代码的调用。

weixin_44120030的博客 2400

一代测序、二代测序以及三代测序的优缺点及应用对比?

一、初现庐山真面目 一代测序:又称Sanger测序(多分子,单克隆) 历史:第一代DNA测序技术(又称Sanger测序)在1975年,由Sanger等人开创,并在1977年完成第一个基因组序列(噬菌体X174),全长5375个碱基。研究人员经过30年的实践并对技术及测序策略的不断改进(如使用了不同策略的作图法、鸟枪法),2001年完成的首个人类基因组图谱就是以改进了的Sanger法为其测序基础。 原理:在4个DNA合成反应体系(含dNTP)中分别加入一定比例带有标记的ddNTP(分为:ddATP...

wangprince2017 3万+

django 流程大全(超详细)

django超详细。

m0_64408930的博客 2万+

七步设计高频变压器

七步设计高频变压器

m0_71394959的博客 5405

Django 基础教程

Django 是一个基于 Python 的 Web 框架,可让您快速创建高效的 Web 应用程序。它也被称为包含电池的框架,因为 Django 为所有内容提供内置功能,包括 Django 管理界面、默认数据库 - SQLlite3 等。当您构建网站时,您总是需要一组类似的组件:一种处理用户的方法身份验证(注册、登录、退出)、网站管理面板、表单、上传文件的方式等。Django 为您提供了现成的组件供您使用,也可以用于快速开发。Django 基于 MVT(模型-视图-模板)架构。MV.........

努力是为了站在万人之中,成为别人的光 1万+

亲测解决This application failed to start because no Qt platform plugin could be initialized.

这个问题是由于环境变量改变或者Qt的路径改变导致,解决办法是在环境变量里面重新添加Qt路径。

狂小虎/Anthony Dave的博客 KuangXiaoHu's Blogs 2929

Playwright Test Agent 实战:零代码基础也能写自动化测试「喂饭教程」

本文详细介绍了Playwright智能体的三大核心组件:规划智能体设计测试策略,生成智能体转换用例为代码,修复智能体自动修正失败测试。教程包含环境配置步骤、智能体使用方法和实战案例,展示了如何通过自然语言指令快速创建稳定的测试脚本。相比传统方法,Playwright智能体大幅降低测试自动化门槛,提升效率并减少维护成本,使测试人员无需编码基础也能实现高质量的自动化测试。

blues_C的博客 2021

Django详细教程(一) - 基本操作

Django是一个高级的Python Web框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django负责处理网站开发中麻烦的部分,可以专注于编写应用程序,而无需重新开发。它是免费和开源的,有活跃繁荣的社区,丰富的文档,以及很多免费和付费的解决方案。

2203_75327677的博客 3004

YOLO26改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是。YOLO26主要用于轻量化应用部署,相关轻量化改进与其整体架构非常适配。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 1094

基于Django的规模化水产养殖数字化管理平台的设计与实现

本研究开发了一套规模化水产养殖数字化管理平台,采用Python+Django+Vue+MySQL技术栈构建前后端分离架构。系统分为员工端和管理员端:员工端实现环境监控、生产管理和数据可视化等基础功能;管理员端扩展系统管理、池塘设备管理及人员配置等全局管控模块。平台通过实时数据采集、流程标准化和可视化分析,解决了传统养殖中数据滞后、管理粗放等问题,显著提升管理效率并降低人力成本。系统设计贴合行业需求,具有操作便捷性和管理全面性特点,为养殖决策提供数据支撑,推动水产养殖数字化转型。数据库采用E-R图规范化设计,

2601_96387021的博客 234

【华为OD技术面】 - 考到的Lettcode手撕算法代码真题目录

【华为OD技术面 - 考到的Lettcode手撕算法代码真题目录

算法大师! 7825

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

如何实现Django规模化:寻找瓶颈

提供:ZStack云计算 系列教程本教程为Django规模化系列三篇中的第一篇。内容介绍Django是一套基于Python的出色平台,专门用于构建现代Web应用。其最大优势之一在于帮助开发人员更快完成工作。大家可能已经构建起自己的应用并进行部署,但接下来需要向其中加载大量数量并同时接受众多用户的接入。在这种情况下,其速度无疑将受到严重影响。这是一类常见难题,幸运的是,我们拥有多种工具能够加以应对。首

zstack_org的博客 849

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

从Django到Go微服务:devEops技术演进之路给运维平台开发者的启示

在运维领域,**devEops(开发自运维平台)** 是一个极具代表性的开源项目:它先用 **Django** 快速构建起完整的运维体系,又毅然走向 **Go 微服务** 重构。这条技术演进之路,对每一位想打造自运维平台、做自动化运维的开发者来说,都是一份难得的实战教材。本文将拆解 devEops 从 Django 单体到 Go 微服务的转型逻辑,并总结出可直接落地的经验启示,帮助你在选型和架构升

gitblog_00090的博客 908

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

5 分钟跑通第一个 Django 异步任务:django-tasks 完整上手指南与避坑手册

Django 开发者最熟悉的抱怨大概是这个:接口要等邮件发完才返回,用户盯着加载圈转了三秒。django-tasks 是把 Django 正在内置的 Tasks 框架向后移植到当前版本的方案——它让你的既有项目用最小成本获得一套 Django 异步任务处理能力,不需要引入 Celery 那套重型基础设施。本文按"为什么用 → 怎么选 → 怎么跑 → 怎么维护"的顺序讲清楚它。 ## 为什么用任务

gitblog_00363的博客 504

Django小说推荐系统的设计与实现---附源码97965

为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势。在网络小说的要求下,开发一款整体式结构的小说推荐系统,将复杂的系统进行拆分,能够实现对需求的变化快速响应、系统稳定性的保障,能保证平台可持续、规模化发展的要求。

weixin_BYSJ1987的博客 1015

基于Django的网络设备租赁系统设计与实现

本文介绍了一个基于Django框架开发的网络设备租赁系统。该系统针对传统租赁模式存在的流程繁琐、管理混乱等问题,实现了设备信息在线展示、精准查询、线上租赁全流程管理、租期实时监控等功能。系统采用B/S架构,包含设备展示、租赁流程、订单管理等核心模块,支持微信/支付宝支付,提供到期提醒和数据分析功能。应用后可使租赁时间缩短60%,设备利用率提升40%。未来可结合AI和物联网技术进一步优化升级,推动行业数字化转型。系统经过严格测试,提供完整的安装部署支持服务。

qq_1744828575的博客 733

Django小说推荐系统的设计与实现—免费源码分享97965

大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势。在网络小说的要求下,开发一款整体式结构的小说推荐系统,将复杂的系统进行拆分,能够实现对需求的变化快速响应、系统稳定性的保障,能保证平台可持续、规模化发展的要求。 本文研究的小说推荐系统完善了对应的软体架设以及程序编码的工作,系统采用Python语言、Django框架、MySQL数据库进行业务系统的编码及其开发,实现了本系统的全部功能。同时完成小说推荐系统的基本功能.

vx1_Biye_Design的博客 1091

基于Django的天虹商场管理系统设计与实现

本文介绍了基于Django框架开发的天虹商场管理系统,旨在解决连锁零售业多门店协同管理难题。系统设计了四大核心模块:商品统筹管理实现库存智能调配,门店运营提升协同效率,会员服务增强消费粘性,运营分析辅助决策。采用Django MVT架构结合Redis、RabbitMQ等技术,确保数据同步与高并发处理。应用效果显著:补货效率提升50%,会员复购率增长18%。未来规划引入AI视觉识别和供应商协同平台,实现全渠道运营升级。系统有效推动了天虹商场从经验驱动向数据驱动的数字化转型。

q_q1262330535的博客 514

基于Django小说推荐系统的设计与实现-计算机设计源码 97965

管理员账户的基本信息管理。主要提供管理员账户的基本信息录入、删除、维护和查询等功能,包括: 管理员录入管理员账户基本信息; 管理员更新、增加及删除管理员账户基本信息; 用户根据管理员账户 ID 查询基本信息; 系统管理员更改个人密码; 评论的基本信息管理。主要提供评论的基本信息录入、修改和查询功能,包括: 用户录入评论基本信息; 管理员更新、增加及删除评论基本信息; 管理员根据评论 ID 查询评论基本信息; 小说分类的基本信息管理。主要是提供小说分类的基本信息录入、维护和查询功能,包括: 用户录入小说分

CXKF10088的博客 1055

基于Python+Django的共享咖啡机运维系统的设计与实现(程序+文档+讲解)

当前共享咖啡机运维存在响应滞后、管理低效的问题:设备故障(如缺料、卡杯)难以及时发现,依赖用户反馈导致停机时间长;各点位设备的耗材余量、使用频率等数据分散,补货与维护计划靠人工预估,易造成资源浪费;用户投诉与设备问题处理进度不透明,影响使用体验与运营效率。 基于 Python+Django 的共享咖啡机运维系统可破解这些问题。系统通过 Django 后端对接咖啡机传感器与物联网模块,实时采集设备状态数据(余量:咖啡豆 / 牛奶 / 纸杯;故障码:卡杯 / 漏水;使用频次:时段性订单量);前端采用响应式界面,

673

如何快速安装 Piko?Android、Windows、macOS 与 Linux 四平台完整指南

Piko 是一款**高性能、跨平台的 PikPak 客户端**,同一套代码覆盖 Android、Windows、macOS 和 Linux 四个平台。本文带你花 5 分钟完成 Piko 安装:从系统要求自查、按平台下载安装包,到 macOS 放行与 Linux 可执行权限处理,一次讲清全部细节。 ## 安装前先看:Piko 系统要求一览表 📋 在下载安装包之前,先确认你的设备满足最低要求,可

gitblog_00364的博客 682
上一篇: 如何对Apache Web服务器进行性能优化
下一篇: 如何在Ubuntu 16.04上设置生产型Node.js应用
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值