tensorflow.keras的导入问题

初衷


程序运行时keras及方法可以正常导入,

目的是消除如上图中的红线,以及获得代码自动补全的功能

尝试方法


翻了下网上基本3种方法

# 1st
from tensorflow.python.keras.layers import Dense

#  2nd
import tensorflow
Dense = tensorflow.keras.layers.Dense

#  3rd
from keras.layers import Dense

查看原始方法,和以上3种方法的layers调用地址:

<module 'keras.api._v2.keras.layers' from 'xxx'>

<module 'tensorflow.python.keras.layers' from 'xxx'>

<module 'keras.api._v2.keras.layers' from 'xxx'>

<module 'keras.layers' from 'xxx'>

结论


网上有这样的观点:

  • tensorflow.python.*为核心部分代码, 不建议调用
  • keras与tf.keras在版本相同时可以通用,不过tf以tf.keras作为高级api,可能有些交互和执行上的优化,建议调用tf.keras

所以只有第2种方法和原始的import是等价的。

代码补全是实现不了了,嫌弃红线可以用第2种变量声明的方法...

唉,就这样把...

其他


查看tensorflow.__init__()中对keras的定义部分:

看不太懂,不过大概可以认为源码的思路是: 加载keras.api下的keras并返回一个变量或实例,用以调用keras下的方法。而这一过程必须在运行时才能发生。。

pycharm一类的解释器,识别不了这种调用方式。这应该就是导致红线和无法自动补全的原因。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值