gpt4 book ai didi

python - 将变量添加到 Keras/TensorFlow CNN 密集层

转载 作者:太空狗 更新时间:2023-10-29 21:02:32 24 4
gpt4 key购买 nike

我想知道是否可以将变量添加到卷积神经网络的密集层中(以及来自先前卷积层的连接,会有一个额外的特征集可用于歧视目的)?如果这是可能的,谁能给我指出一个示例/文档来解释如何这样做?

我希望使用 Keras,但如果 Keras 限制太多,我很乐意使用 TensorFlow。

编辑:在这种情况下,我认为这应该起作用的方式是我向神经网络提供一个包含图像和相关特征集的列表(以及在训练相关分类期间)。

EDIT2:我想要的架构类似于:

              ___________      _________      _________      _________     ________    ______
| Conv | | Max | | Conv | | Max | | | | |
Image --> | Layer 1 | --> | Pool 1 | --> | Layer 2 | --> | Pool 2 | -->| | | |
|_________| |________| |_________| |________| | Dense | | Out |
| Layer |-->|_____|
Other ------------------------------------------------------------>| |
Data | |
|_______|

最佳答案

确实,正如@Marcin 所说,您可以使用合并层。

我建议您为此使用 Functionnal API。如果您不熟悉它,请阅读 some doc here .

这是您使用 keras API 涂鸦的网络模型:

from keras.layers.core import *
from keras.models import Model

# this is your image input definition. You have to specify a shape.
image_input = Input(shape=(32,32,3))
# Some more data input with 10 features (eg.)
other_data_input = Input(shape=(10,))

# First convolution filled with random parameters for the example
conv1 = Convolution2D(nb_filter = nb_filter1, nb_row = nb_row1, nb_col=_nb_col1, padding = "same", activation = "tanh")(image_input)
# MaxPool it
conv1 = MaxPooling2D(pool_size=(pool_1,pool_2))(conv1)
# Second Convolution
conv2 = Convolution2D(nb_filter = nb_filter2, nb_row = nb_row2, nb_col=_nb_col2, padding = "same", activation = "tanh")(conv1)
# MaxPool it
conv2 = MaxPooling2D(pool_size=(pool_1,pool_2))(conv2)
# Flatten the output to enable the merge to happen with the other input
first_part_output = Flatten()(conv2)

# Merge the output of the convNet with your added features by concatenation
merged_model = keras.layers.concatenate([first_part_output, other_data_input])

# Predict on the output (say you want a binary classification)
predictions = Dense(1, activation ='sigmoid')(merged_model)

# Now create the model
model = Model(inputs=[image_input, other_data_input], outputs=predictions)
# see your model
model.summary()

# compile it
model.compile(optimizer='adamax', loss='binary_crossentropy')

好了 :) 最后很容易,定义您想要的输入和输出数量,只需在创建 Model 对象时在列表中指定它们即可。当你适合它时,也可以在列表中单独喂它们。

关于python - 将变量添加到 Keras/TensorFlow CNN 密集层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42556919/

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