多重继承、正则表达式和git的使用

使用PlantUML一键生成UE5核心类继承关系图 在大型C++项目开发中,理解复杂的类继承体系是掌握系统架构的关键。类图作为一种UML(统一建模语言)图表,能够直观地展示类之间的继承、组合等关系,是进行代码设计、评审和团队沟通的重要工具。其技术价值在于将抽象的代码结构可视化,帮助开发者快速理清模块依赖,避免设计缺陷。在游戏开发领域,尤其是使用虚幻引擎5(UE5)这类庞大框架时,面对诸如AActor、UObject、APawn等成百上千个类,手动绘制和维护类图成本极高。本文聚焦于利用PlantUML这一纯文本绘图工具,通过编写脚本自动化生成UE5核心类的继承 阅读详情

多重继承

class Father(object):

    def __init__(self, name):
        self._name = name

    def drink(self):
        print(self._name + '正在白酒')


class Monk(object):

    def __init__(self, nickname):
        self._nickname = nickname

    def eat_vagetable(self):
        print(self._nickname + '正在吃斋')


class Musician(object):

    def __init__(self, art_name):
        self._art_name = art_name

    def play_piano(self):
        print(self._art_name + '正在弹钢琴')

    def drink(self):
        print(self._art_name + '正在喝绿茶')


class Son(Father, Monk, Musician):
#这个顺序很重要,如果多个父类用共同的方法,优先继承前面的

    def __init__(self, name, nickname, art_name):
        Father.__init__(self, name)
        Monk.__init__(self, nickname)
        Musician.__init__(self, art_name)

#不要轻易使用多重继承,如果不可避免,最好将它的其他的父类设置成抽象类


def main():
    son = Son('王大锤', '智障禅师', '小炮')#多重继承要传多个参数
    son.drink()
    Musician.drink(son) #通过这种方式可以让son访问不是第一顺序的父类
    son.eat_vagetable()
    son.play_piano()


if __name__ == '__main__':
    main()
#这段代码是对上面代码的优化,在不可避免使用多重继承的情况下,我们最好将除第一个父类以外的
#其他父类写成抽象类
from abc import ABCMeta, abstractmethod


class Father(object):

    def __init__(self, name):
        self._name = name

    def drink(self):
        print(self._name + '正在白酒')


class Monk(object, metaclass=ABCMeta):

    def __init__(self, nickname):
        self._nickname = nickname

    @abstractmethod
    def eat_vagetable(self):
        pass


class Musician(object, metaclass=ABCMeta):

    def __init__(self, art_name):
        self._art_name = art_name

    @abstractmethod
    def play_piano(self):
        print(self._art_name + '正在弹钢琴')

    @abstractmethod
    def drink(self):
        print(self._art_name + '正在喝绿茶')


class Son(Father, Monk, Musician):
#这个顺序很重要,如果多个父类用共同的方法,优先继承前面的

    def __init__(self, name, nickname, art_name):
        Father.__init__(self, name)
        self._nickname = nickname
        self._art_name =art_name

    def eat_vagetable(self):
        print(self._nickname + '正在吃斋')

    def play_piano(self):
        print(self._art_name + '正在弹钢琴')

    def drink(self):
        print(self._art_name + '正在喝绿茶')

#不要轻易使用多重继承,如果不可避免,最好将它的其他的父类设置成抽象类


def main():
    son = Son('王大锤', '智障禅师', '小炮')#多重继承要传多个参数
    son.drink()
    son.eat_vagetable()
    son.play_piano()


if __name__ == '__main__':
    main()
class A(object):

    def foo(self):
        print('A\'s foo')#\转义


class B(object):

    pass


class C(object):

    def foo(self):
        print('C\'s foo')


class D(B, C):

    pass


def main():
    d = D()
    d.foo()
#这是一个菱形继承,一种非常糟糕的继承方法,在Python2中,输出的结果会是A的方法,默认的
#深度优先搜索,在Python3中,是广度优先搜索
#如果一个类有多个父类,而多个父类又有多个父类,(菱形继承/钻石继承)
# 那么在搜索属性和方法是搜索的依据是C3算法
#这个是Python3中的一个改进,在此之前搜索的算法是深度优先搜索(DFS)
#不要轻易使用多重继承

if __name__ == '__main__':
    main()
# ENIAC 第一台计算机

正则表达式 - 工具 - 字符串的匹配模式

def is_valid_username(username):
    """
    判断用户名是否有效(用户名有字母数字下滑线构成且长度为6-20字符

    :param username: 用户名

    :return: 有效返回True 无效返回False
    """
    if 6 <= len(username) <= 20:
        for c in username:
            if c  not in 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_':
             #if not ('0' <= c <= '9' or 'A' <= c <= 'Z' or 'a' <= c <= 'z' or c == '_'):  效果同上 
                return False
        return True
    return False
#\w{6,20} 这段代码与上面的函数相同
#re - regular expression
import re
username = 'jackfrued##'
m = re.match(r'\w{6,20}', username)#发现前面是匹配的,后面就不判断了
#x = re.match(r'^\w{6,20}$') 这样表示完整的字符串都匹配
print(m)#返回的是匹配,匹配不成功返回None
print(m.span())#返回匹配的范围
print(m.group()) #返回匹配成功的位置
if m:
    print('匹配成功')
else:
    print('匹配不成功')
import re
username = '###jackfrued##'
m = re.search(r'\w{6,20}', username)#对所有字符进行匹配,找到匹配的范围
print(m)#返回的是匹配,匹配不成功返回None
print(m.span())#返回匹配的范围
print(m.group()) #返回匹配成功的位置
if m:
    print('匹配成功')
else:
    print('匹配不成功')
print('a\n')#换行
print('a\\n')#多加\取消转义
print(r'a\n')#原始字符串
#验证QQ的正则表达式
#[1-9]\d{4,11},表示第一个数字是1到9后面跟4到11个数字
import re
user = input('请输入账号')
password = input('请输入密码')
u = re.match(r'^[0-9a-zA-Z_]{6,20}$', user)#只能匹配字母数字下划线
s = re.match(r'[1-9]\d{4,11}', password)
#pattern1 = re.compile(r'^[0-9a-zA-Z_]{6,20}$') 创建一个对象
#u = pattern1.match(user)
#这种写法上在效果上与上面的写法一样,如果这个要在下面多次调用,建议这样写,否则用上面的方法
if not u :
    print('请输入正确的账号')
if not s:
    print('请输入正确的密码')
if u and s:
    print('有效')
请输入账号666666
请输入密码666666
有效
13[0-9]\d{8}|14[5,7]\d{8}|15[012356789]\d{8}|17[678]\d{8}|18[0-9]\d{8}
#www.pythontutor.com 一个辅助代码执行的网站,可以清楚看到代码执行时内存的分配

版本控制


#Subversion 集中式的版本控制
#Git 分布式的版本控制#
#现有的仓库  github 全世界最大的代码集散地
#中国的仓库网站 开源中国 托管代码的平台
# Coding 可以建不限的公开仓库和两个私有仓库
"""
CVS - Concurrent Version System
VSS - Visual Source Safe
都是锁模式
2000年的时候被淘汰

Subversion 合并模式 必须有中央服务器

2005
Git-Linux 可以在本地做服务器 有了中央服务器效果就和Subversion一样
"""
"""
在命令行提示符下输入
版本控制可以放任意文件
git --version检查是否已安装好git
git init 初始化git,设置本地仓库,一个仓库只需要设置一次
git add . (.表示所有文件,注意空格) 将所有文件纳入版本控制
git add 文件名 将制定文件纳入版本控制,并没有真正的提交
git rm 文件名 删除制定文件
git status 显示版本控制状态,查看文件是否
git commit -m '上传原因'   将文件正式纳入版本控制 提交文件
不要输入git commit 后果自负。。一定要加-m和原因
git log 查看所有历史版本
git reset  f3f3d818a2423ed11c98554a264a0717fd44eda1 回到历史版本,后面的是唯一的版本号
git checkout 文件名 拿回一个删除的文件
去Coding上建一个项目
git remote add origin https://git.coding.net/******/******.git
git push -u origin master 通过这两段代码关联仓库
如果是要合并项目
需要输入git pull
git 基本操作指南
http://www.bootcss.com/p/git-guide/

"""

git指南

"""
熟悉这两个工具
"""
基于声明式策略实现Git推送动态权限控制:从SQL-Like规则到执行引擎 访问控制是软件安全与DevOps自动化的核心基础,其原理在于根据主体、资源和操作属性动态判断权限。传统的静态配置(如API密钥、访问列表)难以应对多仓库、条件化访问等复杂场景。策略即代码(Policy as Code)技术通过声明式语言定义权限规则,将安全逻辑版本化、可测试化,极大提升了可维护性与合规性。其技术价值在于实现细粒度、上下文感知的动态授权,典型应用场景包括CI/CD流水线门禁、多云资源管控和微服务API网关。本文聚焦于Git推送权限控制,探讨如何构建一个解析类似`allow github.pus 阅读详情

相关推荐

Python软件工程实践:从二级考试到项目开发的思维跃迁

软件工程是构建可靠、可维护软件系统的系统性方法论,其核心在于通过工程化思维解决代码混乱、维护困难等实际问题。从原理层面看,它强调模块化、高内聚低耦合的设计原则,并遵循从需求分析到测试维护的完整生命周期模型。在技术价值上,软件工程能显著提升代码质量、团队协作效率和项目可扩展性,尤其适用于Python这类快速开发语言。常见的应用场景包括Web开发、数据分析和自动化脚本等,其中结构化设计、面向对象编程和单元测试是关键技术实践。本文聚焦Python二级考试中的软件工程基础,通过具体案例解析如何将工程化思想融入编程,

440

git简介及命令使用

git命令使用 git介绍 Git 是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。 本教程是史上最浅显易懂的 Git 教程,能够帮助读者迅速掌握并上手操作 Git 命令。 1. **适用人群**本教程绝对面向初学者,没有接触过版本控制概念的读者也可以轻松入门,不必担心 起步难度;本教程实用性超强,边学边练,一点也不觉得枯燥。而且,你所学的 Git 命令是 “充分且 必要”的,掌握了这些东西,你就可以通过 Git 轻松地完成你的工作。 3. **gi

weixin_45942715的博客 205

C++代码可视化实战:使用cpp2dia自动生成UML类图

在软件工程领域,代码可视化是理解复杂系统架构、提升团队协作效率的关键技术。其核心原理是通过静态分析工具解析源代码,提取类、方法、属性等元素及其关系,构建抽象模型,再通过图形渲染引擎生成可视化图表。这项技术的核心价值在于将抽象的代码逻辑转化为直观的图形表示,极大降低了理解大型遗留系统或新项目架构的认知负荷,是进行架构评审、编写设计文档和新人培训的利器。典型的应用场景包括维护大型C++遗留系统、进行架构设计沟通以及自动化文档生成。本文聚焦于cpp2dia这一轻量级开源工具,它巧妙地利用CastXML/GCC-X

angw337679452的博客 484

git基本命令1

目录git initgit addgit commitgit clonegit status忽略文件git diff git init git init用来将当前目录初始化为git目录,当执行完git init后,当前目录会创建一个.git的目录,所有git需要的数据和资源都存放在这个目录下。 git add git add支持正则表达式,git add .表示保存已修改文件。git add之前...

执心灬 613

Unity版本控制终极指南:AssetModificationProcessor自动化实践

版本控制系统(VCS)是软件开发中管理代码变更、实现团队协作的基础工具,其核心原理在于追踪文件历史、合并修改与解决冲突。在游戏开发领域,Unity项目的资产(Asset)管理面临独特挑战,如二进制文件处理、序列化引用维护等,传统VCS工作流常导致.meta文件冲突、引用丢失等问题。通过Unity编辑器提供的AssetModificationProcessor API,开发者可以在资产生命周期关键节点注入自动化逻辑,实现资产命名规范检查、引用同步、冲突预防等,从而提升团队协作效率与项目稳定性。本文聚焦于利用该

weixin_30924239的博客 362

Unity项目图标自定义:提升开发效率的编辑器视觉管理方案

在Unity开发中,编辑器扩展与工作流优化是提升团队协作效率的关键技术领域。其核心原理在于通过监听编辑器事件(如projectWindowItemOnGUI)和配置规则引擎,动态修改用户界面元素。这项技术的价值在于将视觉信息与项目结构深度绑定,实现资源的快速识别与分类,从而显著降低认知负荷和查找时间。典型的应用场景包括为脚本、美术、预制体等特定类型的文件夹或文件分配专属图标,建立团队统一的视觉规范。本文聚焦于利用Unity Editor Toolbox插件,通过配置匹配规则(如路径、名称、扩展名或正则表达式

fanjava 395

git ignore patterns

.gitignore uses globbing patterns to match against file names. You can construct your patterns using various symbols: Pattern Example matches Explanation* **/logs logs/debug.loglogs/monday...

wangbingfengf98的专栏 786

自动化代码说明文档合并工具设计与实现

在现代软件开发过程中,项目结构日益复杂,多层级目录中分散着大量用于描述模块功能、配置信息和开发规范的说明性文档。其中,以readme.txt为代表的文本型说明文件广泛存在于各级子目录中,承载着关键的上下文信息。然而,随着项目规模扩大,人工查阅与整合这些分散文档变得低效且易遗漏。因此,构建一套自动化、可复用的“代码说明文档合并”机制成为提升团队协作效率与知识沉淀质量的重要手段。

weixin_42372837的博客 651

Git 入门知识(与SVN对比)

目前我们遇到的问题有三个:1. 将项目代码从svn迁移到git(一个项目只需要一个人做就可以了)2. Git的安装与配置。(从一台没有安装过git的机器,到我们可以使用。每个人只需要配置一次。)3. 就是我们使用git管理我们的代码。(重点) Git简单介绍:git是一款免费的、开源的分布式版本管理控制系统(工具)。和SVN一样,都是管理我们代码文档用的。 Git比SVN相比有什么区别呢?1. 最...

漫步繁华街的专栏 2万+

C语言 函数

一、什么是函数 二、函数的相关语法 三、函数编码规范

m0_57105760的博客 1891

TEC控制器芯片 ADN8835 中文数据手册

ADN8835是一款高集成度的单芯片TEC控制器。它包括线性电压调节模块脉冲宽度调制(PWM) 电压调节模块和两个零漂移、轨到轨斩波放大器。线性控制器和PWM驱动器用于控制H桥配置中的内部功率MOSFET。通过测量热传感器反馈电压,并使用集成的运算放大器作为比例-积分-微分(PID)补偿器来调理信号,ADN8835通过TEC驱动电流,将连接至TEC模块的激光二极管或无源组件的温度稳定到编程的目标温度。

lu2289504634的博客 9540

git branch简介

git-branch手册页NAME名称git-branch - 列出,创建或删除分支SYNOPSIS概要git branch [--color[=&lt;when&gt;] | --no-color] [-r | -a]               [--list] [-v [--abbrev=&lt;length&gt; | --no-abbrev]]               [--colu...

笔头先生 2304

STM32F407 FSMC并口读取AD7606

先贴一下最终效果图.这个是AD7606并口读取数据一个周期后的数据结果. 原始波形用示波器看是很平滑的. AD7606不知为何就会出现干扰, 我猜测可能是数字信号干扰导致的. 因为干扰的波形很有规律. 这种现象基本上可以排除是程序问题. 应该是干扰或者数字信号干扰,或者是数字和模拟共地导致的.是一个宏,实际上是指向的一个内存地址, 这个内存地址是FSMC指定的地址. 使用FSMC接口, 可免于控制引脚, 直接读取某个地址即可, FSMC会自动产生操作时序. 具体请见FSMC相关知识.

走错路的程序员 5499

Python第四周之多重继承、正则表达式、re的方法、git云储存

多重继承   1.一个类继承多个类,而多个父类又有公共的父类,(菱形继承/钻石继承)   2.如果一个类有多个父类,那么在搜索属性和方法时,搜索的依据是C3算法。   3.这是Python3的改进,在此之前的算法是深度优先搜索算法 DFS 注意:避免使用多重继承,如果必须要用,尽量只继承亲爸的,后爸的不继承属性,且方法写为抽象类方法。 学会辨别子类继承的是哪个父类。 fro...

dht3123的博客 144

Unity3D 集成 SQLite 数据库实战:从零搭建到数据可视化

本文详细介绍了在Unity3D项目中集成SQLite数据库的完整实战流程。从SQLite的轻量、稳定、易用特性讲起,逐步指导开发者完成环境配置、驱动集成、C#脚本编写(涵盖连接、建表、增删改查),并进阶演示了数据模型封装与在Unity UI中实现数据可视化的方法。最后提供了多线程访问、路径差异、性能优化等关键避坑指南,帮助开发者构建可靠高效的本地数据管理方案。

weixin_29291069的博客 92

AI漫剧全套万能提示词合集

今天给大家整理一套已经跑通爆款漫剧的万能提示词库!覆盖:豆包剧本人设词 + 分镜生成词 + 即梦绘图词 + 动态优化词 + 防翻车固定词直接复制粘贴,新手也能做出稳定、高清、统一、有质感的AI漫剧!你是资深短视频漫剧编剧,擅长制作60秒竖屏爆款AI漫剧,请为我创作一集完整漫剧内容。要求:开头3秒高能抓眼,中段有冲突转折,结尾留强悬念钩子,节奏紧凑、适合短视频流量。首先生成固定统一人物人设:包含脸型、五官、发色、发型、穿搭、身材、气质、画风、光影细节,要求足够精细,保证全程角色不变脸。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1921

第四周学习总结与心得

多重继承 正则表达式 Git 多线程和多进程 个人心得 多重继承 一个类可以同时有多个父类,可以继承这些父类的属性;也可以是A类继承了B类,而B类又继承了C类。 如果子类继承的父类中的属性,在多个父类中都有,那么子类在搜索属性和方法时会依据C3算法:会优先继承放在左边的父类的属性;如果左边的父类中没有,但是这个父类的父类中有,这个子类搜索时会优先搜索同一层次的父类。 正则表达式...

just1done的博客 973

MDIO接口协议与其详解——单片机

在单片机领域,通过MDIO接口可以与外部设备进行通信,实现对设备的控制和数据的读写。通过本文的介绍,你可以了解到MDIO接口协议的原理和使用方法,并参考源代码示例进行实际的开发和应用。具体的初始化方法与单片机的型号和开发环境有关,可以参考相应的单片机手册和开发工具的文档。(1)发送读取命令:向MDIO线发送读取命令,通常是发送一个特定的控制字节,用于指示要读取的寄存器地址。(1)发送写入命令:向MDIO线发送写入命令,通常是发送一个特定的控制字节,用于指示要写入的寄存器地址。二、MDIO接口协议使用方法。

web_class282的博客 2625

Python的第四周学习总结

Day 16 2018.3.19 主要学习内容: 一、多重继承 python中支持多重继承的形式,其中需要注意的是圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。 class Father(object): def __init__(self, name): ...

Ace_7012RM的博客 548

RK+linux教程:RK3588 RGA硬件加速在YOLOv5图像预处理中的深度应用教程

摘要: 本教程深入解析了RK3588芯片的RGA硬件加速器在YOLOv5图像预处理中的应用。通过专用硬件设计,RGA支持图像缩放、边界填充等核心操作,结合零拷贝技术显著提升处理效率。重点分析了LetterBox算法的RGA实现,包括参数计算、边界填充和性能优化,并与传统CPU处理对比,展示了RGA在高分辨率图像处理中的优势。教程还提供了统一的预处理接口设计,便于在OpenCV与RGA方案间灵活切换,为RK3588平台的深度学习部署提供实用优化方案。

LXY_LOVE36的博客 977

jre9下载 jdk9

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

【Python】面试基础知识整理

版权声明:本文为优快云博主「精钩子娃」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.youkuaiyun.com/qq_42199781/article/details/92422941 1、 正则表达式 ^ 行首匹配,和在[]里的不是一个 $ 行尾匹配 . 匹配任意一个字符(除了\n) (xyz) 匹配小括号内的xyz(作...

JiaJia 2743

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

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

python web后端,笔试面试题三

一、python 部分1.1 请列举 python2 与 python3 的区别,请将下面的 python2 代码转换成python3。 class Point: def __init__(self, x, y): self.x = x self.y = y def __str__(self): return '({}, {})'.format(self.x, self.y) po...

CaoMei_HuaCha的博客 1162

【学海无涯】Java成神之路

Java成神之路的汇总,斩妖除魔!

weixin_36001569的博客 2066

前端面试汇总(不定时更新)

前端面试汇总(不定时更新)

jl____的博客 1535
上一篇: 文件读写和异常处理
下一篇: 线程、进程与赛车游戏
北辰0518
博客等级 码龄9年 84粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值