gpt4 book ai didi

tensorflow - Keras 中的神经网络具有两种不同的输入类型 - 图像和值

转载 作者:行者123 更新时间:2023-12-04 03:00:33 24 4
gpt4 key购买 nike

目前我有一个工作的 CNN,它从给定图像输出一个从 -1 到 1 的值。现在我还想向网络输入给定值,因为它们确实可以提高输出的准确性。这个工作当然不能用 CNN 来完成,但应该可以将它们添加到全连接层,不是吗?如果有人向我展示如何使用 Keras 来解决这个问题,那就太好了。

我现在的 CNN:

model = Sequential()
model.add(Lambda(lambda x: x/127.5-1.0, input_shape=(66,200,3)))
model.add(Conv2D(24, 5, 5, activation='elu', subsample=(2, 2)))
model.add(Conv2D(36, 5, 5, activation='elu', subsample=(2, 2)))
model.add(Conv2D(48, 5, 5, activation='elu', subsample=(2, 2)))
model.add(Conv2D(64, 3, 3, activation='elu'))
model.add(Conv2D(64, 3, 3, activation='elu'))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(100, activation='elu'))
model.add(Dense(50, activation='elu'))
model.add(Dense(10, activation='elu'))
model.add(Dense(1))
model.summary()

我认为它应该如何工作: enter image description here~修改后的图形来自 https://blog.insightdatascience.com/classifying-e-commerce-products-based-on-images-and-text-14b3f98f899e .

最佳答案

Diego 给出了答案,我将使用 Functional API 构建一个模型作为示例.假设您有 3 个想要的功能添加到每个图像。每个特征都是一个实数,因此如果我们将它们连接起来,我们就会得到一个包含三个分量的特征向量。

from keras.layers import ( Conv2D, Flatten, Lambda, Dense, concatenate,
Dropout, Input )
from keras.models import Model

image = np.random.rand(10, 66, 200, 3)
feature = np.random.rand(10, 3) # feature vector
y = np.random.normal(0, 1, (10, 1))


image_input = Input(shape=(66, 200, 3))
aux_input = Input(shape=(3,))

lamb = Lambda(lambda x: x/127.5-1.0, input_shape=(66,200,3))(image_input)
cov1 = Conv2D(24, 5, 5, activation='elu', subsample=(2, 2))(lamb)
cov2 = Conv2D(36, 5, 5, activation='elu', subsample=(2, 2))(cov1)
cov3 = Conv2D(48, 5, 5, activation='elu', subsample=(2, 2))(cov2)
cov4 = Conv2D(64, 3, 3, activation='elu')(cov3)
cov5 = Conv2D(64, 3, 3, activation='elu')(cov4)
dropout = Dropout(0.5)(cov5)
flatten = Flatten()(dropout)

# Here we add in the feature vectors
merge = concatenate([flatten, aux_input])

d1 = Dense(100, activation='elu')(merge)
d2 = Dense(50, activation='elu')(d1)
d3 = Dense(10, activation='elu')(d2)
out = Dense(1)(d3)

model = Model(inputs=[image_input, aux_input], outputs=[out])
model.compile(loss='mse', optimizer='rmsprop')
model.fit([image, feature], y)

关于tensorflow - Keras 中的神经网络具有两种不同的输入类型 - 图像和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49618986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com