我已经为 miniBatchGradientDescent 编写了 mini_batch 创建器
代码如下:
# 函数用于创建包含 mini-batches 的列表
def create_mini_batches(X,y, batch_size):
print(X.shape, y.shape) # 输出 (280, 34) (280,)
splitData=[]
splitDataResults=[]
batchCount=X.shape[0] // batch_size # 使用地板除法获取整数形式的索引
for i in range(batchCount):
splitData.append(X[(i) * batch_size : (i+1) * batch_size, :])
splitDataResults.append(y[(i) * batch_size : (i+1) * batch_size, :]) # 产生错误
splitData=np.asarray(splitData)
splitDataResults=np.asarray(splitDataResults)
return splitData, splitDataResults, batchCount
错误提示如下:
splitDataResults.append(y[(i) * batch_size : (i+1) * batch_size, :])
IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed
我确定形状是正确的,但它还是给我报错了。哪里出了问题?
回答:
尝试重塑 y:
print(X.shape, y.shape) # 输出 (280, 34) (280,)
y = y.reshape(-1, 1)
这应该能解决你的问题,因为 y 将变成二维的