【发布时间】:2021-03-30 14:01:26
【问题描述】:
这里有一个简化的代码示例:
class MyCustomLayer(keras.layers.Layer):
def __init__(self, num_filters=64, kernel_size=3):
keras.layers.Layer.__init__(self)
self.conv_1 = keras.layers.Conv2D(filters=num_filters,
kernel_size=kernel_size)
def call(self, inputs):
return self.conv_1(inputs)
x = keras.Input(shape=(None, None, 3))
my_custom_layer = MyCustomLayer()
y = my_custom_layer(x)
以下行有效:
my_custom_layer.output
# Out: <KerasTensor: shape=(None, None, None, 64) dtype=float32 (created by layer 'my_custom_layer')>
但是,这在 Tensorflow 2.4.1 中中断:
my_custom_layer.conv_1.output
出现以下错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-6-74d9fc3b4fbb> in <module>
----> 1 my_custom_layer.conv_1.output
~/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py in output(self)
2152 """
2153 if not self._inbound_nodes:
-> 2154 raise AttributeError('Layer ' + self.name + ' has no inbound nodes.')
2155 return self._get_node_attribute_at_index(0, 'output_tensors', 'output')
2156
AttributeError: Layer conv2d has no inbound nodes.
如果我在 Tensorflow 2.3.1 中运行相同的代码,它可以正常工作。我查看了更新日志,但没有发现什么可以破坏它。可能是什么原因?
GitHub 问题 #48196:https://github.com/tensorflow/tensorflow/issues/48196
【问题讨论】:
标签: python tensorflow keras tensorflow2.0