我把我的问题简化为一个非常基本的例子:
from tensorflow import keras
from tensorflow.keras import layers
class MyLayer(layers.Layer):
def __init__(self, z):
super(MyLayer, self).__init__()
self.z = z
def call(self, inputs):
return inputs * self.z
inputs = keras.Input(shape=(2,))
layer = MyLayer(inputs)
z = layer(inputs)
model = keras.Model(inputs=inputs, outputs=z)但却失败了
TypeError: Could not build a TypeSpec for <KerasTensor: shape=(None, 2) dtype=float32 (created by layer 'tf.math.multiply_17')> with type KerasTensor你知道问题在哪里吗?
发布于 2022-03-07 14:50:53
不能将Keras符号张量与图模式中的Tensorflow张量相乘。有几种方法可以实现您想要的IIUC,这里有一个选项,假设您想要将两个张量传递给MyLayer
from tensorflow import keras
from tensorflow.keras import layers
class MyLayer(layers.Layer):
def __init__(self):
super(MyLayer, self).__init__()
def call(self, inputs):
x, y = inputs
return x * y
inputs = keras.Input(shape=(2,))
layer = MyLayer()
z = layer([inputs, inputs])
model = keras.Model(inputs=inputs, outputs=z)https://stackoverflow.com/questions/71382404
复制相似问题