如何在 keras 模型上添加一些属性?
How can i add some properties on keras model?
所以,我正在使用 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的输出shape是(32, 32, 32)?谁能给我一个答案?我不明白如何解决这个问题。
是的,您的图像是 (32,32,32)。 Conv2D在原始彩色图像中使用了32个卷积滤波器。
因此,在卷积之后,它不会考虑初始图像的颜色 space。您可以在进入模型之前进行转换,也可以在第一层进行转换。
选中层 Lambda
以便能够在模型中包含您喜欢的任何转换。
所以,我正在使用 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的输出shape是(32, 32, 32)?谁能给我一个答案?我不明白如何解决这个问题。
是的,您的图像是 (32,32,32)。 Conv2D在原始彩色图像中使用了32个卷积滤波器。
因此,在卷积之后,它不会考虑初始图像的颜色 space。您可以在进入模型之前进行转换,也可以在第一层进行转换。
选中层 Lambda
以便能够在模型中包含您喜欢的任何转换。