作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我有一个工作的 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()
我认为它应该如何工作: ~修改后的图形来自 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/
我是一名优秀的程序员,十分优秀!