第三次作业:小批量梯度下降

1.作业要求

问题一:

  • 使用minibatch的方式进行梯度下降
  • 采用随机选取数据的方式
  • batch size分别选择5,10,15进行运行

复习讲过的课程并回答关于损失函数的 2D 示意图的问题:

  • 问题2:为什么是椭圆而不是圆?如何把这个图变成一个圆?
  • 问题3:为什么中心是个椭圆区域而不是一个点?
项目 内容
这个作业属于哪个课程 人工智能实战
我在这个课程的目标是 将人工智能技术与本专业知识联系
这个作业在哪个具体方面帮助我实现目标 通过代码实现加深对SGD以及小批量梯度下降的理解
作业正文 链接

二、解决方法

在示例代码的基础上进行一些修改添加,实现随机数据选取

  1. 随机选取数据的方式
def GetRandomBatchSamples(X,Y,batch_size,iteration):
    rnd_idx = np.random.permutation(len(X[0]))
    num_feature = X.shape[0]
    start = iteration * batch_size
    end = start + batch_size
    batch_x=[]
    batch_y=[]
    for i in range(batch_size):
        batch_x.append(X[0][rnd_idx[i]])
        batch_y.append(Y[0][rnd_idx[i]])
    batch_x=np.array(batch_x).reshape(num_feature,batch_size)
    batch_y=np.array(batch_y).reshape(num_feature,batch_size)
    return batch_x, batch_y

三、结果展示

批量为5
enter image description here
enter image description here
enter image description here

从以上结果可以看出随着批量的增加,迭代过程的波动逐渐变小,收敛速度变快。

四、问题解答

猜你喜欢

转载自www.cnblogs.com/xhybuaa-/p/10592923.html