Questions tagged «conv-neural-network»

11
为什么binary_crossentropy和categorical_crossentropy对同一问题给出不同的性能?
我正在尝试训练CNN以按主题对文本进行分类。当我使用二进制交叉熵时,我的精度约为80%,而使用分类交叉熵时,我的精度约为50%。 我不明白为什么会这样。这是一个多类问题,这是否意味着我必须使用分类交叉熵,而具有二进制交叉熵的结果却毫无意义? model.add(embedding_layer) model.add(Dropout(0.25)) # convolution layers model.add(Conv1D(nb_filter=32, filter_length=4, border_mode='valid', activation='relu')) model.add(MaxPooling1D(pool_length=2)) # dense layers model.add(Flatten()) model.add(Dense(256)) model.add(Dropout(0.25)) model.add(Activation('relu')) # output layer model.add(Dense(len(class_id_index))) model.add(Activation('softmax')) 然后我将其categorical_crossentropy作为损失函数像这样编译它: model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 要么 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 从直觉上讲,为什么我要使用分类交叉熵是合理的,我不明白为什么使用二进制得到好的结果,而使用分类不好的原因。

7
如何验证CuDNN安装?
我已经搜索了很多地方,但是得到的只是如何安装它,而不是如何验证它是否已安装。我可以确认已安装NVIDIA驱动程序,并且已安装CUDA,但是我不知道如何验证已安装CuDNN。帮助将不胜感激,谢谢! PS。 这是用于caffe的实现。当前,所有功能在未启用CuDNN的情况下都可以正常工作。


9
批量归一化和辍学订购?
最初的问题是关于TensorFlow实现的。但是,答案是针对一般的实现。这个通用答案也是TensorFlow的正确答案。 在TensorFlow中使用批量归一化和辍学时(特别是使用contrib.layers),我需要担心订购吗? 如果我在退出后立即使用批处理规范化,则可能会出现问题。例如,如果批量归一化训练中的偏移量训练输出的比例尺数字较大,但是将相同的偏移量应用到较小的比例尺数字(由于补偿了更多的输出),而在测试过程中没有丢失,则轮班可能关闭。TensorFlow批处理规范化层会自动对此进行补偿吗?还是由于某种原因我不会想念这件事吗? 另外,将两者一起使用时还有其他陷阱吗?例如,假设我使用他们以正确的顺序在问候上述(假设有是一个正确的顺序),可以存在与使用分批正常化和漏失在多个连续层烦恼?我没有立即看到问题,但是我可能会丢失一些东西。 非常感谢! 更新: 实验测试似乎表明排序确实很重要。我在相同的网络上运行了两次,但批次标准和退出均相反。当辍学在批处理规范之前时,验证损失似乎会随着培训损失的减少而增加。在另一种情况下,它们都下降了。但就我而言,运动缓慢,因此在接受更多培训后情况可能会发生变化,这只是一次测试。一个更加明确和明智的答案仍然会受到赞赏。

4
Tensorflow大步向前
我想了解的进步在tf.nn.avg_pool,tf.nn.max_pool,tf.nn.conv2d说法。 该文件反复说 步幅:长度大于等于4的整数的列表。输入张量每个维度的滑动窗口的步幅。 我的问题是: 4个以上的整数分别代表什么? 对于卷积网络,为什么必须要有stride [0] = strides [3] = 1? 在此示例中,我们看到了tf.reshape(_X,shape=[-1, 28, 28, 1])。为什么是-1? 遗憾的是,文档中使用-1进行重塑的示例并不能很好地解释这种情况。


7
如何根据损失值告诉Keras停止训练?
目前,我使用以下代码: callbacks = [ EarlyStopping(monitor='val_loss', patience=2, verbose=0), ModelCheckpoint(kfold_weights_path, monitor='val_loss', save_best_only=True, verbose=0), ] model.fit(X_train.astype('float32'), Y_train, batch_size=batch_size, nb_epoch=nb_epoch, shuffle=True, verbose=1, validation_data=(X_valid, Y_valid), callbacks=callbacks) 它告诉Keras,如果损失在2个时期内没有改善,就停止训练。但是我要在损失小于某个恒定的“ THR”后停止训练: if val_loss < THR: break 我已经在文档中看到有可能进行自己的回调:http : //keras.io/callbacks/ 但没有发现如何停止训练过程。我需要个建议。

4
卷积神经网络中的批量归一化
我是卷积神经网络的新手,只是对特征图以及如何在图像上进行卷积以提取特征有所了解。我很高兴知道在CNN中应用批处理规范化的一些细节。 我阅读了https://arxiv.org/pdf/1502.03167v3.pdf这篇论文,可以理解对数据应用的BN算法,但最后他们提到在对CNN进行应用时需要稍作修改: 对于卷积层,我们还希望归一化服从卷积属性-以便以相同的方式对同一要素图的不同元素在不同位置进行归一化。为了实现这一目标,我们在所有位置上以小批量的方式联合标准化了所有激活。在Alg。在图1中,我们将B作为特征图上所有小批量和空间位置的所有值的集合–因此,对于大小为m的小批量和大小为p×q的特征图,我们使用effec -大小为m'= | B |的小批量生产 = m·pq。我们每个特征图而不是每个激活都学习一对参数γ(k)和β(k)。海藻 对图2进行类似的修改,以便在推理期间BN变换将相同的线性变换应用于给定特征图中的每个激活。 当他们说“要以相同的方式对同一要素图的不同元素在不同位置进行标准化时,我完全感到困惑 ” 我知道要素地图的含义,每个要素地图中的权重都是不同的元素。但是我不明白什么是位置或空间位置。 我根本无法理解下面的句子 “在Alg。1中,我们让B为跨越小批量和空间位置的要素的要素图中所有值的集合” 如果有人能用更简单的方式详细阐述并向我解释,我将感到非常高兴
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.