func ReshapeParams(val *matrix.Matrix, layerSizes []int) []*matrix.Matrix {
	vals := val.Values()
	thetas := make(nn.Parameters, 0, len(layerSizes)-1)

	offset := 0
	for i := 0; i < len(layerSizes)-1; i++ {
		thetas = append(thetas, matrix.FromSlice(vals[offset:offset+(layerSizes[i+1]*layerSizes[i]+1)], layerSizes[i+1], layerSizes[i]+1))
		offset += layerSizes[i+1]*layerSizes[i] + 1
	}

	return thetas
}