DeepLearning学习笔记之一:重新认识
TEC

DeepLearning学习笔记之一:重新认识

DMCXE
2022-03-16 / 0 评论 / 137 阅读 / 正在检测是否收录...

第一次接触DL还是之前提过的DDPG。但实际上就如同学习最优策略的数学理论一样,对那些泛函内容只能照葫芦画瓢般的模仿。所以还是决定从头认识一下他,看看他到底离我多远,或者离我多近。
这一切的前提是,学过高数、线性代数与概率论,以及一些计算机语言和思维。这些大一就已经经历过了。要理解DeepLearning,我们不妨从一个线性回归说起——这是初中的知识,在一些点之间划一条直线。
呃呃,我又发现我现在还是打不了公式代码,我再也不用这个数据库了!
那我先介绍几个基本的语言实现。由于第一次接触DL使用的是Tensorflow 1.X——一个开源的DL框架,自然的我换到MacOs平台后第一个想要验证的就是它。巧合的是Tensorflos以及Apple Inc.已经为M1提供了原生ARM般程序与基于METAL的GPU加速,在经历一番艰难的Tensorflow 1.X->2.X代码修改后,老程序还是跑起来了。
首先介绍第一个重要的代码实现:它能够算出任意可导函数的导数。(还在研究争取造轮子)

with tf.GradientTape() as t:
   y = 2*x*x
x_grad = t.gradient(y,x)

之后是随机梯度下降算法SGD
暂时看不懂没关系,等我睡一觉起来把公式模块弄出来就好了,困了,晚安!
手写实现为:

def sgd(params,grads,lr,batch_size):
    for param, grads in zip(params,grads):#zip使得w和b拆分成列
        param.assign_sub(lr*grads/batch_size)#这里就是SGD算法,.assign_sub表示将原来存在的param元素减去()内

API实现一行即可:

trainer = tf.keras.optimizers.SGD(learning_rate=0.03)

随便查个图
WX20220316-010009@2x.png

0

评论 (0)

取消