![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
文章平均质量分 90
zuweie
钱钱钱
展开
-
深度学习之人工神经网络(C语言描述)
应该怎么理解每一层梯度?可以形象的把神经网络想象成一个千层榴莲蛋糕,一层面皮,一层奶油,然后又一层面皮,一层奶油。面皮就是 z,奶油就是权重矩阵 W。损失函数L对 z 求导就像把这个榴莲蛋糕切开。原创 2023-12-03 13:44:46 · 1211 阅读 · 0 评论 -
机器学习之极大期望 EM,估算多维高斯混合模型参数(C语言描述)
最近拜读了机器学习领域,经典书籍,李航老师的《统计学习方法》,深受裨益。现实现算法,记录分享。本章,还结合就另外一本比较好的统计学习的书 《机器学习经典算法–基于opcv》里面关于极大期望 EM 算法。EM 算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计,或者极大后验概率估计。E步,求期望(expectation);M步,求极大(maximization)。所以这一算法称作极大期望算法,简称EM算法。概率模型有时候既有观测变量,又有隐变量。原创 2023-11-14 10:40:39 · 82 阅读 · 0 评论 -
机器学习之SVM及广义 SMO(C语言描述)
第六章 支持向量机 SVM支持向量机(support vector machines, SVM)是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大线性分类器。间隔最大化是它跟感知机最大的区别。支持向量机的学习策略就是间隔最大化,求解凸二次规划(convex quadratic programming)的最优化算法。支持向量机学习方法包含:线性可分支持向量机(linear support vector machine in linearly separable case)、线性支持向量机(linear原创 2023-11-06 14:19:27 · 327 阅读 · 0 评论 -
机器学习之感知机(C语言描述)
最近拜读了机器学习领域,经典书籍,李航老师的《统计学习方法》,深受裨益。萌生想法,把每章的内容作大白话概要,并把每章的算法以 C 语言的形式实现,跟广大读者分享。感知机是一个非常简单的机器学习模型,现实应用场景中几乎不会用到感知机。但作为入门级别机器学习模型,很好地从理论到实现的展示了一个机器学习模型是如何训练,以及如何根据输入的数据,进行预测与推理。完。原创 2023-10-18 16:43:18 · 133 阅读 · 0 评论 -
手撸 Numpy 的 Slice 与 Pad 算法(C语言描述)
就是在第一维度中截取第 1, 第 2 个单元(1:3),再从这第1,第2个单元中截取第二维度的第2,第3个单元(2:4),然后再从第2维度的第2,第3个单元找截取第三个维度的第2个单元(2:3), 最后从第三个维度中截取第四维度的第1单元(1:2)。Numpy 包里面的数组是一种不定维数组,使用它的时候,我在思考它的 Slice 与 Pad 算法是如何。首先考虑最简单的情况,便是一维数组的 Slice, 要截取一维数组中的某一段数据,需要掌握两个条件,1、是数组的首地址,2、是截取数据的偏移量。原创 2023-10-13 16:22:31 · 250 阅读 · 0 评论 -
容器与跌倒器,C实现《第六篇,终篇,排序》
前言这篇为最后一篇,这篇介绍如何分离算法。在不同的底层容器实现,可以同一个算法。快速排序快排,网上有甚多介绍,这里就不介绍。这里介绍使用以上五篇文章设计的容器与迭代器的接口,如何实现快排。代码实现如下// 分离函数,第一个与最后一个比较,如果比第一个大即交换游标指定的元素。// 最后将最后一个元素与游标的元素交换。static iterator_t _partition (iterat...原创 2019-10-29 09:21:30 · 118 阅读 · 0 评论 -
容器与迭代器,C实现《第五篇,list实现容器》
前言上一篇博文记录了使用vector来实现容器,这篇将会介绍使用双向链表list来实现容器。list双向链表定义如下:typedef struct _list_node list_node_t;struct _list_node{ /* 数据节点的data,要放在首段,否则会出现灾难性后果 */ type_value_t data; list_node_t* p...原创 2019-10-29 08:40:32 · 120 阅读 · 0 评论 -
容器与迭代器,C实现《第四篇,vector实现容器》
前言上一篇介绍了容器的接口。这篇打算一个数组来实现容器的具体接口。vectorvector动态数组,定义如下:typedef struct _vector{ container_t container; type_value_t* _data; size_t _size; size_t _capacity; } vector_t;container ...原创 2019-10-28 14:48:14 · 188 阅读 · 0 评论 -
容器与迭代器,C实现《第三篇,容器接口》
前言上两篇博客我记录了迭代器,与数据类型的实现。这两个实现,最后都是为了容器的实现而服务。容器接口设计容器接口设计考虑一下几点:能获取第一个元素以及最后一个元素的迭代器。提供迭代器移动的实现。提供插入、删除、查找、排序、尺寸(size)等功能。使用单独的内存配置器(这个单独一篇博文)。根据以上几点要求代码实现如下:typedef struct _container conta...原创 2019-10-28 09:09:49 · 131 阅读 · 0 评论 -
容器与迭代器,C实现《第二篇,迭代器》
前言上一篇讲到设计一个 type_value_t 代替C中其他的数值类型,以及其使用方法。而这篇文章记录一下自己设计的迭代器。迭代器迭代器,我理解上,就是一个容器的指引。例如数组的下标、链表节点的指针…,如...原创 2019-10-28 08:43:20 · 197 阅读 · 0 评论 -
容器与迭代器,C实现《第一篇,数据类型》
用C写的容器与迭代器的原因有时候使用C写代码,发现C没有像C++STL里面容器,感觉着实不方便。为此想着自己实现一套类似C++容器的接口,方便自己使用。...原创 2019-10-26 23:49:45 · 194 阅读 · 0 评论