转发 TensorFlow不同版本引起的错误

本文详细介绍了从TensorFlow 0.11版本升级到1.0版本时遇到的API变化及对应更新方法,包括summary操作、文件写入器、标量摘要及直方图摘要等关键API的调整。

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

转自:https://blog.youkuaiyun.com/s_sunnyy/article/details/70999462



这几天分别基于tensorflow0.11和1.0版本测试,记录下两个版本不同的API,

参考:http://blog.csdn.NET/edwards_june/article/details/65652385


前4个是 V0.11 的API 用在 V1.0 的错误

1. AttributeError: 'module' object has no attribute 'merge_all_summaries'

>> tf.merge_all_summaries() 改为:summary_op = tf.summary.merge_all()


2. AttributeError: 'module' object has no attribute 'SummaryWriter'

>> tf.train.SummaryWriter 改为:tf.summary.FileWriter


3. AttributeError: 'module' object has no attribute 'scalar_summary'

>> tf.scalar_summary 改为:tf.summary.scalar


4. AttributeError: 'module' object has no attribute 'histogram_summary'

>> histogram_summary 改为:tf.summary.histogram

下边这个是 V1.0 的API 用在 V0.11 的错误
File "dis-alexnet_benchmark.py", line 110, in alexnet_v2
    biases_initializer=tf.zeros_initializer(),
TypeError: zeros_initializer() takes at least 1 argument (0 given)
>> 将 biases_initializer=tf.zeros_initializer() 改为:biases_initializer=tf.zeros_initializer
### Python `super()` 使用方法及其在 FPN 类初始化中的常见问题 当定义继承自其他类的新类时,`super()` 函数用于调用父类的方法。对于特征金字塔网络 (Feature Pyramid Network, FPN),其初始化过程涉及多个参数设置以及可能存在的兼容性和配置错误。 #### 调用父类构造函数的方式 为了确保子类能够正确地扩展并利用父类的功能,在 FPNC 的构造器中应当通过如下方式来调用父类的构造函数: ```python class FPN(BaseModule): def __init__(self, in_channels, out_channels, num_outs, start_level=0, end_level=-1, add_extra_convs=False, relu_before_extra_convs=False, no_norm_on_lateral=False, conv_cfg=None, norm_cfg=None, act_cfg=None, upsample_cfg=dict(mode='nearest'), init_cfg=dict(type='Xavier', layer='Conv2d', distribution='uniform')): super(FPN, self).__init__() # 正确使用 super() 来初始化基类成员变量[^2] ``` #### 常见初始化问题及解决方案 1. **属性访问冲突** 如果子类和父类中有同名属性,则可能会发生覆盖现象。应避免这种情况的发生,可以通过命名空间区分不同级别的私有属性。 2. **未传递必要的参数给父类** 子类构造函数忘记向父类传递某些必需的参数可能导致异常行为或功能缺失。务必确认所有预期由父级处理的数据都已适当转发。 3. **版本差异引起的 API 变更** 当依赖库更新后,旧版API不再适用新环境下的实现逻辑。例如 TensorFlow 版本升级带来的变化[^4]。因此建议开发者密切关注所使用的第三方包文档说明,并及时调整项目代码适应最新接口标准。 4. **默认值设定不当** 参数如 `start_level`, `end_level` 等如果设置了不合理的默认值,会影响整个模型的表现效果。应该基于具体应用场景合理规划这些超参的选择范围[^3]。 5. **缺少必要模块导入** 若程序试图操作不存在的对象(比如尝试获取 `'tensorflow.compat.v1'` 属性),则会抛出 AttributeError 错误提示。这通常是因为忘记了引入相应的软件组件所致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值