首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有可能,如果可能,如何构建一个神经网络,使其不会在神经网络的某些区域反向传播?

有没有可能,如果可能,如何构建一个神经网络,使其不会在神经网络的某些区域反向传播?
EN

Stack Overflow用户
提问于 2020-05-28 04:12:33
回答 1查看 24关注 0票数 1

我有一个想法来改进我目前正在使用的神经网络,但我对机器学习还很陌生,所以我不知道它是否可能实现,它有多难,或者只是不值得。想法是这样的。我有一个图像样本,我必须将它们在信号和背景(0或1)之间进行分类。问题是,这些与变量x相关的图像与这个变量非常相关,这意味着通常情况下,具有相似x值的两个图像与具有非常不同的x值的两个图像更相似。所以我想,也许将这个样本训练成小样本会是一个好主意,每个图像更多地考虑具有相似x的图像训练的权重。这就是我想实现它的方式(可能这个实现并不是真的可行,所以如果你知道一个更可行的方法,请随时告诉我):

现在,我对整个样本使用卷积神经网络,使用Keras,它是这样的:

代码语言:javascript
复制
def buildCNN(input_shape):
    model = Sequential()
    model.add(Conv2D(32, kernel_size=(3,3),activation='relu',input_shape=input_shape))
    model.add(Conv2D(64, (3,3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(Dropout(0.25))
    model.add(Flatten())
    model.add(Dense(128,activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(1, activation='sigmoid'))
    return model

我的想法是将样本排列成例如20个类似x的小样本,并对每个小样本使用相同的CNN (可能会减少一点参数数量),然后将这些不同的CNN与一些权重和偏差连接起来。然后,当训练和比较输出与实际值时,当反向传播时,我想只考虑训练这些外部权重以及与被训练图像对应的x的范围相对应的CNN,而保持其余CNN的参数值不变。现在,我不知道这样的东西是否存在,如果存在,如何在Keras中实现。你可以在我的代码中看到它非常简单,并且不太了解Keras,所以如果你有任何想法如何做到这一点,我也需要具体地使用Keras来实现它(如果使用Keras不可能,那么请说明是否可以使用其他选项以及如何实现)。

(顺便说一句,奖金问题与主要问题没有任何关系,所以没有必要回答,但如果你对它有所了解,它会有所帮助。我使用的图像的sahpe为(40,40),因此分辨率较低。它们不是可以通过滤镜增强分辨率的图像类型,所以我别无选择,只能使用这种分辨率。问题是,我现在使用的CNN工作得很好,但我认为如果使用针对低分辨率图像的特定架构,它可以得到改进,但我还找不到任何关于它的东西。如果你对此有所了解,也请发表评论。)

EN

回答 1

Stack Overflow用户

发布于 2020-05-28 07:35:01

不幸的是,使用keras.sequential模型不可能得到更复杂的神经网络拓扑。有必要使用函数式API而不是顺序模型。指向此here的链接。它允许您创建复杂的拓扑,例如具有不规则形状和拓扑的更多输入和输出。希望这是有益的!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62052055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档