这是一个我无法回避的非常简单的问题。我是tensorflow的新手,这是我第二次面对这个问题。
from tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, Dropout, Flatten, Input
from tensorflow.keras.models import Model
import numpy as np
x = tf.keras.Input(shape=(128, 128, 4))
conv = Conv2D(30, (3, 3), activation='relu',input_shape=(128, 128, 4))(x)
conv = Conv2D(12, (5,5))(conv)
conv = MaxPooling2D(pool_size=(2,2))(conv)
print(conv[2])
conv = np.array(conv[2]) # <---- here is the problem
input_mean = np.mean(conv[1:], axis=0)
input_std = np.std(conv, axis=0)
conv = (conv - input_mean) / input_std
conv = Flatten()(conv)
conv = Dense(157, activation='relu')(conv)
model = Model(inputs = x, outputs = conv)
#model.summary()
我得到的错误是,
Cannot convert a symbolic Keras input/output to a numpy array. This error may indicate that you're trying to pass a symbolic value to a NumPy call, which is not supported. Or, you may be trying to pass Keras symbolic inputs/outputs to a TF API that does not register dispatching, preventing Keras from automatically converting the API call to a lambda layer in the Functional Model.
我的问题是,如何从Maxpooling层中获取Output,并获取每个传入通道的平均值和标准差?平均值和std的输出将是一个张量,其中每个通道都被单独归一化。然后,我会将这个输出压平,并将其发送到我的完全连接的致密层。
提前谢谢。
我得到了类似的错误,并执行了以下操作:
del model
之前:
model = Model(inputs = x, outputs = conv)
它解决了我的问题。我很想知道它是否也能解决你的问题:(。