深度学习入门(一)手写数字识别
本次手写数字识别参考的是Michael Nielsen大佬写的 Neural Networks and Deep Learning 来实现的,由于本书的代码都是由 Python 2.0 编写而成,因此这次我打算使用 Python 3.9 来进行源代码的修改,之后再去实现手写数字识别
期望实现的目标
通过Python3.9实现手写数字识别的基本代码
基于以上代码实现出一个较为精确的模型并产生可视化函数
实现在每次返回后随机抽取9个图片显示,并在上方显示出识别出的数字结果
基于模型的基础上,做出一套可以通过识别自己笔迹,实时输出的手写数字识别系统
准备环境MNIST数据库MNIST 数据集可在 获取, 它包含了四个部分:
Training set images: train-images-idx3-ubyte.gz (9.9 MB, 解压后 47 MB, 包含 60,000 个样本)
Training set labels: train-labels-idx1-ubyte.gz (29 KB, 解压后 60 KB, 包含 60,000 个标签)
Test set images: t10 ...
icpc-Day1
c
哈希表的查找
基本思想:记录的存贮位置与关键字之间存在对应关系,Loc(i)
Hash(key)=key mod p(p是一个整数)
有一个关键字 key=962148,规定哈希表m=25,取质数23
t雪花题目的思路
取一个自定义素数利用哈希查找的方式,与质数取模。写的时候可以选择顺时针比较和逆时针比较
1.先定义一个结构体,来存储每片雪花的六个角。
2.Bool 函数,用for循环进行比较(双for嵌套设k=(i+j)%6将x[k]与y[j]比较,不相等则跳出第二层循环,当j==5时return true)
星空矩阵的思路
1.采用欧矢距离和 sum
2.获取当前连通块,赋予字母
3.dfs(sx,sy)
4.get_id(sum),以当前sum取hash找,找到dfs()没有返回id
5.get_sum()
C++核心_4
C++的模板模板的概念模板就是建立通用的摸具,提高复用性
函数模板C++提供两种模板机制:函数模板和类模板
函数模板语法函数语法作用:
建立一个通用的函数,其函数返回值和形参类型可以不具体制定,用一个虚拟的类型来代表。
语法12template<typename T>函数声明或定义
解释template:声明函数模板
typename:表面其后面的富豪是一种数据类型,可以用class代替
T:通用的数据类型,名称可以替换,通常为大写字母
12345678910111213141516171819#include <iostream>using namespace std;template<typename T>//声明一个模板 void sawp(T &a, T &b){ T tmp = a; a=b; b=tmp;}int main(){ int a =10; int b =10; //自动类型推导 sawp(a,b); //显示指定类型 swap& ...
C++核心_3
C++的文件操作程序运行时产生的数据都属于临时数据,程序一旦运行解释都会被释放
通过文件可以将数据持久化
c++中文件操作需要报刊头文件<fstream>
文件类型分为两种:
1.文本文件 —ASCII码存储
2.二进制文件 —二进制形式存储
操作文件的三大类:
1.写操作:ofstream
2.读操作:ifstream
3.读写操作:fstream
文本文件写文件步骤:
1.包含头文件
#include <fstream>
2.创造流对象
ofstream ofs;
3.打开文件
ofs.open("文件路径",打开方式);
4.写数据
ofs<<"写入的数据";
5.关闭文件
ofs.close()
文件打开方式
打开方式
解释
ios::in
为读文件而打开文件
ios::out
为写文件而打开文件
ios::ate
初始位置:文件尾
ios::app
追加方式写文件
ios::trunc
如果文件存在先删除,再创建
ios:: binary
二进制方式
...
Python Day1
第一个程序12print('Hello,World!')# 输出: Hello,World!
打印文本print 函数也可以用来输出多行文本。
可以使用\n(换行符)给文本换行,也可以使用多个 print 函数输出多行
print() 函数是会自带\n的
例如
12print('Hello world!')print('good\nbeauty ...')
而如果我们想要没有换行的话,可以使用end=''来解决这一问题
1print('Hello world!',end='')
PS:会发现python的语法要求中并没有要求使用;来强制作为语句的结尾
变量在Python中的变量会根据赋予的值,来进行自动判断数据类型。
PS:字符串类型的变量可以通过*运算来输出打印的个数
变量可以随意多次重新赋值。
在Python中,变量没有特定的类型,因此你可以将一个字符串分配给一个变量。
123456>>> x = 123.456>>> print ...
C++核心_2
C++的继承和多态继承基本语法继承是面向对象的三大特征之一
有些类与类之间存在特殊的关系,例如界门纲目科属种
他们都是下级有上级的共性,还有自己的特性
而通过继承可以减少重复代码
基本语法
1class 子类(派生类) : 继承方式 父类(基类)
子类的成员中包含两大部分
一类是从父类继承过来的,一类是自己增加的成员
从基类继承过来的表现其共性,而新增的成员体现了其个性
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#include <iostream>//继承实现页面//公共页面类class BasePage{public: void head() { cot<<1<<2<<3<<endl; } void foot() { cout<<1< ...
C#核心-封装
C#核心导航请根据右侧目录进行自助跳转
类名
{
(写在类中的)
成员变量
成员方法
初始化调用-构造函数
释放时调用-析构函数
成员属性
索引器
静态成员-类名点出使用
运算符重载
}
(写在类外的)
静态类和静态构造函数
拓展方法
类和对象什么是类基本概念:
具有相同特征
具有相同行为
一类事物的抽象
类是对象的模板
可以通过类创建出对象
类的关键词:class
类声明在哪里一般声明在namespace的语句块中
类声明的语法12345678910访问修饰符(pubic,private) class 类名{ //成员变量--特征 //成员方法--行为 //成员属性--保护特征 //构造函数和析构函数 //索引器 //运算符重载 //静态成员}
类声明实例12345678910111213//这个类是用来形容人类的//注意命名:用帕斯卡命名法//同一个语句块中的不同类 不能重名class Person{ //成员变量-- ...
C++核心_1
C++核心编程内存分区模型c++程序在执行时,将内存大方向划分为4个区域
代码区:存放函数体的二进制代码,由操作系统进行管理
全局区:存放全局变量和静态变量以及常量
栈区:由编译器自动分配释放,存放函数的参数值,局部变量等
堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收
意义:
不同区域存放的数据,赋予不同的生命周期,给我们强大的灵活编程
程序运行前在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域
代码区:
存放cpu执行的机器指令
代码区是共享且只读的
全局区:
全局变量和静态变量存放至此
全局区还包含了常量区,字符串常量和其他常量也存放至此
该区域的数据在程序结束后由操作系统释放
类和对象C++面向对象的三大特征:封继承、多态
C++认为万事万物皆为对象,对象有其属性和行为
封装语法:class类名{访问权限:属性 / 行为}
示例一:设计一个园类求圆的周长
123456789101112131415161718192021222324#include <iostream>using namespace std ...
C语言 Day13
指针初阶指针是什么
在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思hi是通过它能找到以它为内存的内存单元。
1234567int main(){ int a=10;//a占4个字节 int *pa = &a;//拿到的是4个字节中的第一个字节 *pa = 20; return 0;}
存放地址的变量被叫做指针变量,地址就是指针。
指针和指针类型12345678910int main(){ int* pa; char* pc; float* pf; printf("%d\n",sizeof(pa)); printf("%d\n",sizeof(pc)); printf("%d\n",sizeof(pf));}
结果是一样的,虽然所占空间是一致的,但是 ...
homework-Lesson-3
写代码将三个整数数按从大到小输出1234567891011121314151617181920212223242526272829int main(){ int a = 0; int b = 0; int c = 0; int t = 0; scanf("%d %d %d", &a, &b, &c); if (a < b) { t = a; a = b; b = t; } if (a < c) { t = a; a = c; c = t; } if (b < c) { t = b; b = c; c = t; } printf("%d %d %d\n", a, b, c); return 0;}
打印3的倍数的数12345678910111213int main(){ int a = 0; int b = 0; for(int i = 1;i <= 100; i++) ...