- 博客(17)
- 问答 (1)
- 收藏
- 关注
原创 为什么说 “We must not include limits.h”
问题#include <dirent.h>struct dirent *d;d->d_name;IDE 提示时出现如下字样头文件中则是struct dirent{ __ino_t d_ino; __off_t d_off; unsigned short int d_reclen; unsigned char d_type; char d_name[256]; /* We must not include limits.h! *
2021-11-05 23:24:22
201
原创 if 和三元表达式的区别
在 C 语言层面除了写法以外没什么区别。int a = 5;a == 0 ? puts("5") : puts("4");if (a == 0) { puts("5");} else { puts("4");}在汇编语言层面上有一些区别,if 倾向于使用条件控制转移(j 系列)命令,三元表达式倾向于使用条件数据传输(cmov 系列)命令。void set1(int *a, int *b){ if (*a < *b) { *a = *a;
2021-10-17 23:06:55
520
原创 正确理解和使用 C++ 的 const constexpr
文章目录尽可能使用 `const`参数例外返回值例外`const this` 和成员`const_cast`与 `constexpr` 的关系函数变量构造函数尽可能使用 constC++ 与 C 语言相比有着更强的类型检查,包括四种 cast,左值右值之分,reference,以及最重要的——对 const 的要求。const 是一个相当麻烦的要求,比如其强大的“传播性”——只要在一个地方使用,就可能蔓延到各个角落,出现各种编译错误。但编程实践证明 const 的使用是值得的(甚至 Rust 语言已经
2021-10-07 19:42:16
388
原创 卷积层和池化层的实现(使用 im2col )
卷积为什么卷积神经网络的能力更强?以 mnist 数据集为例,在普通的神经网络中,输入的数据是长度为 784784784 的像素。但实际上图像本身 28×2828 \times 2828×28 的的二维结构已经被破坏了,每个像素与之上下更多像素之间的位置关系都消失了。神经网络所看见的世界是由一维向量构成的,自然无法与现实形成更好的拟合。神经网络中的卷积是通过一个个滤波器对原始图像提取特征来实现的。不妨以二维单通道的图像数据为例,看看卷积的作用方式。(左侧为原始图像数据,中间为滤波器,右侧为特征图像)
2021-10-05 01:05:20
681
原创 numpy反向神经网络学习mnist
用numpy实现最简单的前馈神经网络——反向网络建立篇在前一篇文章中,已经初略的建立了前向神经网络,但是前向神经网络大量的前馈计算使其只有较低的速度,因此我们来建立反向神经网络。本篇主要是公式文章目录用`numpy`实现最简单的前馈神经网络——反向网络建立篇链式法则利用节点值偏导数求权重偏导数和偏置偏导数利用节点值偏导数求权重偏导数和偏置偏导数利用后一层节点偏导数求前一层节点值偏导数最终计算过程链式法则在学习偏导数的反向传递之前,需要有对链式法则有一定的了解provide that&n
2021-09-20 11:29:57
173
原创 C#实现各种排序算法
C#实现各种排序每种排序的要点和实现文章中参数Func<T, T, bool> comp的意思是,排序后对于任意i < j,不可能有comp(list[j], list[i])文章目录C#实现各种排序冒泡排序选择排序插入排序希尔排序堆排序归并排序快速排序冒泡排序每次循环都将最值放到最前或者最后倒着排序,只需访问一次list.Count(可选)使用sorted布尔变量,如果中途已经排序好了就不用继续排了(可选)稳定,最值稳定上浮public static void Bu
2021-09-11 20:43:45
277
原创 Shell函数详解
Shell函数#!/bin/bash定义在被使用之前,函数必须已经被定义如果函数名重复,后一个函数会覆盖前一个函数function foo { echo "foo"}# 也可以不写function关键字bar { echo "bar"}参数运行函数就如同运行一个脚本,它也具有参数和返回值,和在Shell命令行中调用命令是类似的同样使用$1, $#, $@等变量获取参数function mul { # 连乘参数 local result="$1" # 局部变量
2021-09-09 21:12:43
165
原创 在C++中实现Python的range
在C++中实现Python的range文章目录在C++中实现Python的range在实现过程中几个应该注意的问题整型溢出迭代器选择终止条件类型选择vector转换最终代码和Python对比和Python对比代码在最后,可以先看代码再看说明在实现过程中几个应该注意的问题整型溢出for (auto i : irange(1e9, -2e9, -2e9)) std::cout << i << "\n";std::cout << '\n';// 如果不注
2021-09-09 13:50:29
403
原创 numpy简单神经网络学习mnist
用numpy实现最简单的前馈神经网络——正向网络建立篇根据上一篇文章,来构建神经网络吧明确输入和输出选择合适的各种函数用矩阵和激活函数建立起从输入到输出的拟合函数用正向传播或反向传播获得损失函数的偏导数(注意对一定的数据集来说自变量为W\bold{W}W,A\bold{A}A固定)用梯度下降法努力使损失函数最小mnist分析(输入分析)下载在这里下载mnist数据集关于mnist的详细说明在其他人的文章里有说明images前16个字节包含了数据的说明,之后的所有字节以784784
2021-09-08 20:48:56
429
1
原创 numpy建立简单前馈神经网络
用numpy实现最简单的前馈神经网络——神经网络架构篇基础知识梯度(高等数学)、矩阵运算(线性代数)、numpy(ndarray)、python基础语法目录神经网络架构神经网络建立先用比较简单的正向传播建立好框架,再用反向传播改变算法实例:学习mnist手写数字数据集神经网络架构矩阵拟合梯度矩阵运算我们可以把矩阵看作一个特殊的函数,它的作用是将长度为n的向量(如下图A\bold{A}A)转化为长度为m的向量(如下图Z\bold{Z}Z)。将输入看作
2021-09-07 23:06:19
889
原创 写出良好的Python注释
Python注释块注释和行内注释# 块注释一般用于描述下方代码if a > 10 : # 按照PEP8规范,块注释以一个#和一个空格开头,除非块注释中需要使用缩进 a = 10else: # 块注释应该和它要注释的代码具有同样的缩进 a *= 2# 行内注释用于注释一行代码a //= 2 # 很难想象一行代码有什么需要注释的,所以大多数时候它是无用的b **= 2 # 不要注释这种显而易见的代码c = {
2021-08-01 17:59:12
547
原创 关于二分查找(C#及C++实现)
二分查找不同的二分查找用递归实现的二分查找static int BinarySearch<T>(IList<T> list, T target) where T : IComparable<T>{ return BinarySearch(list, 0, list.Count - 1, target);}static int BinarySearch<T>(IList<T> list, int low, int high
2021-06-05 14:48:44
265
原创 C#中的true和false运算符
C#中的true和false运算符基础用法我们先定义一个示例用的类public class BoolTest{ public int X { get; set; } public BoolTest(int x) { X = x; } public static bool operator true(BoolTest test) { Console.WriteLine("call op_true"); return test.X >
2021-04-22 18:10:33
4005
原创 C#语法基础(本质论笔记其二)
类类的声明和实例化class A{}// another fileF(){ A a = new A(); // 实例化类,new <类名>(实例化参数) A aa; aa = new A(); // 先声明后实例化同样可行}类的成员字段和方法class A { private string Name; protected int Seq; internal int Abc; public int Score;
2021-03-28 21:06:40
163
原创 C#语法基础(本质论笔记其一)
C#语言基础数据类型数据类型值类型引用类型sbyte byte short ushortobject预定义类型int uint long ulongstringfloat double decimal bool chardynamic用户定义structclass interface类型enumdelegate array\begin{array}{|c|c|
2021-03-28 21:04:09
155
原创 C语言结构体中的零长数组
C语言结构体中的零长数组实例struct A{ int len; int var[0];};struct B{ int len; int *var;}其中,结构体A使用了零长数组,结构体B用了指针为什么要用零长数组我归纳了以下三点原因:节约空间在int和指针占4字节的机器上sizeof(A) // 4sizeof(B) // 8这是因为A中的var是数组名,B中的var是指针变量编译器对数组名和指针变量的处理方式不一样。我们可以把这
2021-01-22 20:21:09
1220
1
原创 C语言的单引号问题
C语言的单引号问题单引号的原理C语言的单引号实际上时将 ’ ’ 内的字符转化为ASCII码对应的整型值,并且在存储时占据一个字节 sizeof(char)// 第一个例子int main(){ char ch; ch = '?'; printf("%d, %c", ch, ch); // 63, ?}输出 63, ?这是因为?对应的ASCII码值为63现在来看看一个单引号中有两位字符时的情况// 第二个例子int main(){ char ch;
2020-12-03 19:45:44
3280
1
空空如也
在拷贝赋值函数里调用析构函数和拷贝构造函数可行吗
2021-04-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人