1.作业要求
问题一:
- 使用minibatch的方式进行梯度下降
- 采用随机选取数据的方式
- batch size分别选择5,10,15进行运行
复习讲过的课程并回答关于损失函数的 2D 示意图的问题:
- 问题2:为什么是椭圆而不是圆?如何把这个图变成一个圆?
- 问题3:为什么中心是个椭圆区域而不是一个点?
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 人工智能实战 |
我在这个课程的目标是 | 将人工智能技术与本专业知识联系 |
这个作业在哪个具体方面帮助我实现目标 | 通过代码实现加深对SGD以及小批量梯度下降的理解 |
作业正文 | 链接 |
二、解决方法
在示例代码的基础上进行一些修改添加,实现随机数据选取
- 随机选取数据的方式
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
三、结果展示
从以上结果可以看出随着批量的增加,迭代过程的波动逐渐变小,收敛速度变快。