【tensorflow2源码修复】—— 解决不能修改layer_name属性值

问题描述

tf2合并了keras,绝大部分操作tf2和keras是相同的效果,但有的报错,比如在集成学习时,在定义了多个基类模型并训练好后,在集成时报错层名有重复的,是因为默认基类模型的层名是按照默认名命名的,所以有重复的(在定义了相同类型的层时),为解决报错,需要修改层名(两种解决报错的思路:1)去除判断层名是否重复的代码,但在其他代码使用该框架时可能出现相同层名却无法及时判定异常的Bug,这样弊大于利;2)增加配置层名的set方法,这样弊端就是层名成员变量可以被外部修改了,其实没觉得是弊端,所以利远大于弊)

问题解决

考虑name是Layer类的一个属性,所以通过model.get_layer()返回一个Layer类的对象,然后跳转进来,进入Layer类的定义代码:在这里插入图片描述
尝试添加set方法,找name变量,注意一定不是局部变量,一定是self.*name*变量(*表示通配符),所以尝试下图,然后get_layer后进行方法调用测试name是否可以修改(如果不修改源码则报错Layer的name属性是只读的,就无法直接layer.name='xx’来赋值)

在这里插入图片描述

问题总结

这些在网上找的解决方案都是不痛不痒的,解决不了根本问题,都是本着逃避去解决问题,这样是不对的,最核心的能力应该是迎面而上,总想着绕弯、找替代方法在有些地方是行不通的,尤其是陌生领域,不去思考,只想着投机取巧是不合适的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据李菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值