小批量随机梯度下降 讨论区

http://zh.diveintodeeplearning.org/chapter_optimization/minibatch-sgd.html

建议“而梯度下降在迭代过程中一直使用目标函数的真实梯度,无须自我衰减学习率。”将后面的无须自我衰减学习率改为无须自我衰减梯度。因为前面介绍的学习率是在自我衰减的。

在优化算法文献中常说“衰减学习率”或者“常数学习率”,因为梯度是随机的

噢噢,好的,谢谢啦,这个我了解,可能我理解错了书中语句的意思。

这里的样本并没有随机取样,是遍历的所有训练集。是这样吗?

“当批量较小时,每次迭代中使用的样本少,这会导致并行处理和内存使用效率变低。这使得在计算同样数目样本的情况下比使用更大批量时所花时间更多。当批量较大时,每个小批量梯度里可能含有更多的冗余信息。为了得到较好的解,批量较大时比批量较小时需要计算的样本数目可能更多,例如增大迭代周期数。”

无放回采样(without replacement)的是时候,批量样本里没有冗余信息吧,这里表述的是不不太严谨。

为什么说“基于随机采样得到的梯度的方差在迭代过程中无法减小”?
在一个epoch之间的迭代可能无法减小,但是在多个epoch之间是减少的吧?

请大佬帮我一下, :sob: :sob:
为什么文件明明在文件夹里却总是说找不到路径呢
input: import d2lzh as d2l
from mxnet import autograd, gluon, init, nd
from mxnet.gluon import nn, data as gdata, loss as gloss
import numpy as np
import time

def get_data_ch7(): # 本函数已保存在d2lzh包中方便以后使用
data = np.genfromtxt(’…/data/airfoil_self_noise.dat’, delimiter=’\t’)
data = (data - data.mean(axis=0)) / data.std(axis=0)
return nd.array(data[:1500, :-1]), nd.array(data[:1500, -1])

features, labels = get_data_ch7()
features.shape
output:
OSError Traceback (most recent call last)
in
10 return nd.array(data[:1500, :-1]), nd.array(data[:1500, -1])
11
—> 12 features, labels = get_data_ch7()
13 features.shape

in get_data_ch7()
6
7 def get_data_ch7(): # 本函数已保存在d2lzh包中方便以后使用
----> 8 data = np.genfromtxt(’…/data/airfoil_self_noise.dat’, delimiter=’\t’)
9 data = (data - data.mean(axis=0)) / data.std(axis=0)
10 return nd.array(data[:1500, :-1]), nd.array(data[:1500, -1])

~\AppData\Roaming\Python\Python37\site-packages\numpy\lib\npyio.py in genfromtxt(fname, dtype, comments, delimiter, skip_header, skip_footer, converters, missing_values, filling_values, usecols, names, excludelist, deletechars, replace_space, autostrip, case_sensitive, defaultfmt, unpack, usemask, loose, invalid_raise, max_rows, encoding)
1742 fname = os_fspath(fname)
1743 if isinstance(fname, basestring):
-> 1744 fhd = iter(np.lib._datasource.open(fname, ‘rt’, encoding=encoding))
1745 own_fhd = True
1746 else:

~\AppData\Roaming\Python\Python37\site-packages\numpy\lib_datasource.py in open(path, mode, destpath, encoding, newline)
264
265 ds = DataSource(destpath)
–> 266 return ds.open(path, mode, encoding=encoding, newline=newline)
267
268

~\AppData\Roaming\Python\Python37\site-packages\numpy\lib_datasource.py in open(self, path, mode, encoding, newline)
622 encoding=encoding, newline=newline)
623 else:
–> 624 raise IOError("%s not found." % path)
625
626

OSError: …/data/airfoil_self_noise.dat not found.

data = np.genfromtxt(’…/data/airfoil_self_noise.dat’, delimiter=’\t’)

这里data前面是两个点,你打了三个
ps.我不知道是不是这个mark down格式的问题,我打了两个点这里显示三个 :joy:

嗯嗯,谢谢回复,我打了两个点,还是不行 :sob: :sob:

试一下一个点呢?我就是一个点就可以了

%matplotlib inline
import d2lzh as d2l
from mxnet import autograd, gluon, init, nd
from mxnet.gluon import nn, data as gdata, loss as gloss
import numpy as np
import time

def get_data_ch7(): # 本函数已保存在d2lzh包中方便以后使用
data = np.genfromtxt(’./data/airfoil_self_noise.dat’,delimiter=’\t’)
data = (data - data.mean(axis=0)) / data.std(axis=0)
return nd.array(data[:1500, :-1]), nd.array(data[:1500, -1])

features, labels = get_data_ch7()
print(features.shape)
print(labels.shape)

在书中为什么只有小批量随机梯度下降的学习率需要人为设置衰减,而随机梯度下降和批量梯度下降的学习率只要设置一个很小的正数就可以了。