《Deeply-Learned Feature for Age Estimation》论文阅读笔记

本文介绍了一种结合CNN和流形学习进行特征提取的方法,并应用于年龄估计任务中。通过对比实验验证了该方法的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是IEEE的一篇文章,因为和我做的有点关系,于是拜读之。

论文的idea:使用CNN提取特征后,再用流形学习来降维,最后来做回归或者分类。

论文中的CNN网络结构:


两个convolution,两个pooling,再加一个fc,其中第一个convolution的size为5*5,第二个为7*7,pooling为2*2。


作者提出将L2到L6层的特征全部提取出来,然后串联起来,但是这样维数很大,于是引出降维的使用,使用PCA不会降低精度,但是训练速度会加快,于是后面再降维上,作者提出使用流形学习的三种方法:

Marginal Fisher Analysis (MFA) 、Orthogonal Locality Preserving Projections (OLPP) 、 and Locality Sensitive Discriminant Analysis 。

对比试验如下:



文章试验使用的数据集是:其中FG-NET更适合。

在试验中,使用回归和分类用于年龄估计,四种方法的结果如下,其中SVM用于分类,SVR等用于回归。最后作者证明不论是提取一层特征还是提取多层特征,效果都是比其他的方法好。


### 关于 f-string 嵌套过深的问题 在 Python 中,`f-string` 是一种强大的字符串格式化工具,允许开发者嵌入表达式甚至调用函数。然而,在某些情况下,当 `f-string` 的嵌套层次过多时,可能会引发性能问题或者可读性下降的情况。 #### 性能与可读性的影响 如果 `f-string` 的嵌套层数过高,Python 解释器可能需要花费更多的时间来解析这些复杂的表达式[^3]。此外,过度嵌套的 `f-string` 可能使代码变得难以维护和理解。例如: ```python result = f"The value of pi squared is {(lambda x: (f"{x ** 2:.2f}")((math.pi)))}" print(result) ``` 这段代码虽然功能正常,但由于嵌套了 lambda 表达式以及额外的 `f-string` 层次,使得代码显得冗余且不易阅读。 #### 报错的可能性 尽管 Python 并未明确规定 `f-string` 的最大嵌套深度,但在极端情况下,解释器可能会因为无法处理过于复杂或深层的嵌套而抛出异常。常见的错误可能是类似于 `RecursionError` 或者其他内部实现相关的错误[^4]。 #### 替代方案 为了避免因嵌套过深而导致的问题,可以考虑以下几种方法: 1. 将部分逻辑提取到外部变量中,减少单个 `f-string` 的负担。 ```python intermediate_value = math.pi ** 2 result = f"The value of pi squared is {intermediate_value:.2f}" print(result) ``` 2. 利用 `.format()` 方法作为替代选项之一,尤其是在兼容较低版本 Python(如低于 3.6)的情况下[^1]。 ```python result = "The value of pi squared is {:.2f}".format(math.pi ** 2) print(result) ``` 3. 如果确实存在非常深层次的数据操作需求,则应重新审视程序设计思路,尝试分解任务或将计算过程模块化。 #### 版本依赖注意事项 需要注意的是,不同版本的 Python 对 `f-string` 支持程度有所差异。确保使用的 Python 版本支持所期望的功能特性是非常重要的。对于最新版 Python 来说,通常能够很好地应对常规范围内的 `f-string` 应用场景[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值