Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Keras CNN在好的表现和机会之间交替_Keras_Conv Neural Network - Fatal编程技术网

Keras CNN在好的表现和机会之间交替

Keras CNN在好的表现和机会之间交替,keras,conv-neural-network,Keras,Conv Neural Network,我有一个二进制分类问题,我正试图用Keras编写的CNN来解决。输入是非常稀疏的200X125X2张量(可以看作是两个叠加在一起的图像),其非零元素仅为一个(表示神经元尖峰序列)。输入是使用我构建的数据生成器生成的,因此使用fit_生成器函数对模型进行训练 我尝试过各种体系结构,其中一些表现不错(~88%),但问题是,有时当我训练新模型时,它们似乎根本不起作用,每个时代都有机会(50%)产生结果。奇怪的是,它有时发生在以前工作良好的架构上。我正在使用TensorFlow 2.0在Google C

我有一个二进制分类问题,我正试图用Keras编写的CNN来解决。输入是非常稀疏的
200X125X2
张量(可以看作是两个叠加在一起的图像),其非零元素仅为一个(表示神经元尖峰序列)。输入是使用我构建的数据生成器生成的,因此使用
fit_生成器
函数对模型进行训练

我尝试过各种体系结构,其中一些表现不错(~88%),但问题是,有时当我训练新模型时,它们似乎根本不起作用,每个时代都有机会(50%)产生结果。奇怪的是,它有时发生在以前工作良好的架构上。我正在使用TensorFlow 2.0在Google Colab(GPU)上运行代码。我多次检查代码中是否有任何更改。我知道权重和偏差的随机初始化可能会导致性能的轻微变化,但它看起来像其他东西

任何想法都会很有帮助。谢谢

以下是出现此问题的一个模型的相关代码(我知道,我使用的是不寻常的内核):


我看到的最可疑的东西是模型末尾附近的一个“relu”。根据初始化和学习速率,ReLUs可能不走运,并陷入全零情况。当这种情况发生时,他们完全停止梯度,不再训练

从你的问题来看(有时有效,有时无效),这似乎很有可能是relu

因此,第一个建议(这总是解决问题)是在激活之前添加一个批处理规范化:

model.add(Dense(100))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dense(1, activation='sigmoid')
提示,如果要在展平之前将其与4D张量一起使用,请记住使用通道维度:
BatchNormalization(1)

:)--如果你认为这解决了你的问题,请将其标记为已回答。
model.add(Dense(100))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dense(1, activation='sigmoid')