如何在keras模型上添加一些属性?

2024-06-07 06:02:51 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我在用keras模型做我的项目,用数据图像做一些训练,我可以得到我训练过的图像的输出分类。结果很顺利。但是,我想在我构建的keras模型上添加一些图像属性。例如,我想使用opencv在keras上添加hsv图像属性,以便它们一起训练。你知道吗

image_hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

我想在添加卷积层之后再添加这个特性。我想要的是

from keras import layers
input_ = layers.Input(shape = [96, 96, 3])
conv2 = layers.Conv2D(32, (3, 3), padding = "same", activation = "relu")(input_)
conv2 = layers.BatchNormalization(axis = 1)(conv2)
conv2 = layers.MaxPooling2D(pool_size = (3, 3))(conv2)
conv2 = layers.Dropout(0.2)(conv2)

prop = cv2.cvtColor(np.array(conv2), cv2.COLOR_BGR2HSV)

flat = layers.Flatten()(prop)
fc = layers.Dense(512, activation = "relu")(flat)
fc = layers.BatchNormalization()(fc)
fc = layers.Dropout(0.2)(fc)

output = keras.layers.Dense(2, activation = "sigmoid")(fc)
model = keras.models.Model(inputs = input_, outputs = output)
model.compile(loss="binary_crossentropy", optimizer= Adam(lr=LR, decay = LR / 2),
                      metrics=["accuracy"])

但是,我犯了这样一个错误:

TypeError: src data type = 17 is not supported

是因为conv2的输出形状是(32,32,32)?有人能给我一个答案吗?我不明白怎么解决这个问题。你知道吗


Tags: 模型图像imageinput属性layerscv2activation
1条回答
网友
1楼 · 发布于 2024-06-07 06:02:51

是的,你的图像是(32,32,32)。Conv2D在原始彩色图像中使用32个卷积滤波器。你知道吗

所以,在卷积之后,不需要考虑初始图像的颜色空间。您可以在进入模型之前或作为第一层进行转换。你知道吗

检查层Lambda,以便能够在模型中包含您喜欢的任何转换。你知道吗

相关问题 更多 >