不要拘泥于眼前的得失,不要局限于短期的发展,不要得意于暂时的成功,不要迷失于功利的诱惑。

    
"""
线性回归、对数几率回归模型,本质上是单个神经元。
计算输入特征加权和。
偏置视为每个样本输入特征为1权重,计算特征线性组合。
激活(传递)函数 计算输出。
线性回归,恒等式(值不变)。
对数几率回归,sigmoid。输入->权重->求和->传递->输出。
softmax分类含C个神经元,每个神经元对应一个输出类别。
XOR异或运算,无法通过线性模型解决。
sigmoido类型神经元要求数据线性可分。
2D数据存在直线,高维数据存在超平面,把不同类别样本分隔。

在神经网络输入和输出之间插入更多神经元,解决非线性可分问题。
输入层->隐含层(hidden layer)->输出层->输出。
隐含层使网络可以对输入数据提出更多问题。
隐含层每个神经元对应一个问题,依据问题回答最终决定输出结果。
隐含层在数据分布图允许神经网络绘制以一条以上分隔线。
每条分隔线向输入数据划分提出问题,所有相等输出划分到单个区域。
深度学习,添加更多隐含层,可采用不同类型连接,使用不同激活函数。

梯度下降法,找到函数极值点。
学习,改进模型参数,大量训练,损失最小化。
梯度下降法寻找损失函数极值点。
梯度输出偏导数向量,每个分量对应函数对输入向量相应分量偏导。
求偏导,当前变量外所有变量视为常数,用单变量求导法则。
偏导数度量函数输出相对特定输入变量的变化率,当输入变量值变化,输出值的变化。
损失函数输入变量指模型权值,不是实际数据集输入特征。相对于推断模型每个权值。
梯度输出向量表明每个位置损失函数增长最快方向,在函数每个位置向哪个方向移动函数值可增长。
点表示权值当前值。
梯度向右箭头表示为增加损失需向右移动,简头长度表示向右移动函数值增长量。
反方向移动,损失函数值减少。
直到梯度模为0,达到损失函数极小值点。
学习速率(learning rate)缩放梯度。
梯度向量长度在损失函数单元中,缩放与权值相加。
学习速率是超参数(hyperparameter),模型手工可配置设置,需指定正确值。
太小,需要多轮迭代。太大,超调(overshooting),永远找不到极小值点。
tf.summary.scalar函数在TensorBoard查看损失函数值变化曲线。
局部极值点问题,通过权值随机初始化,增加靠近全局最优点附近开始下降机会。
损失函数所有极值点接近等价。
tf.gradients方法,符号计算推导指定流图步骤梯度以张量输出。
梯度下降法取决输入数据形状及问题特点。

误差反向传播算法,计算损失函数相对网络权值偏导,每层导数都是后一层导数与前一层导输出积。
前馈,从输入开始,逐一计算隐含层输出,直到输出层。
计算导数,从输出层逐一反向传播。
复用所有已完成计算元素。

Sigmoid隐含层,softmax输出层以及带反向传播梯度下降,是最基础构件。
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我理解了你的要求并已记录下来,下面是答案: 好的,我理解了你的要求并已记录下来。下面是答案: ``` // 定义几何体基类 class GeometricShape { public: // 声明计算面积的虚方法 virtual double getArea() = 0; }; // 定义圆形类 class Circle : public GeometricShape { public: Circle(double r) : radius(r) {} virtual double getArea() override { return 3.14 * radius * radius; } private: double radius; }; // 定义矩形类 class Rectangle : public GeometricShape { public: Rectangle(double l, double w) : length(l), width(w) {} virtual double getArea() override { return length * width; } private: double length; double width; }; // 定义多态测试类 class TestPoly { public: // 实现printArea方法,接受GeometricShape类型的参数 void printArea(GeometricShape* shape) { // 获取面积并输出 double area = shape->getArea(); cout << "面积为:" << area << endl; } }; int main() { // 创建多态测试对象 TestPoly test; // 创建圆形对象并计算面积 Circle circle(2); test.printArea(&circle); // 创建矩形对象并计算面积 Rectangle rect(3, 4); test.printArea(&rect); return 0; } ``` 上述代码定义了一个基类 `GeometricShape`,它声明了一个纯虚方法 `getArea()`,表示计算面积的方法。然后定义了 `Circle` 和 `Rectangle` 两个类,它们分别继承自 `GeometricShape`,并实现各自的 `getArea()` 方法。最后定义了 `TestPoly` 类,其中实现了 `printArea()` 方法,接受一个指向 `GeometricShape` 对象的指针,并计算并输出其面积。 在 `main()` 函数中,首先创建一个 `TestPoly` 对象。然后创建一个 `Circle` 对象,半径为 2,并传入 `test.printArea()` 方法中,输出圆形的面积。接着创建一个 `Rectangle` 对象,长为 3,宽为 4,并同样传入 `test.printArea()` 方法中,输出矩形的面积。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值