【问题标题】:On what factors does the resolution of a neural network depend?神经网络的分辨率取决于哪些因素?
【发布时间】:2018-09-28 10:04:21
【问题描述】:

我在 keras 中有一个神经网络。如果两个样本在归一化特征空间中彼此相距 0.001 个单位,则网络不会区分它们。网络能够区分这一点非常重要,因为这种差异在原始(非标准化)特征空间中并非微不足道。 有什么办法可以提高我的神经网络的分辨率?如果是这样,我应该改变哪些因素?

编辑:让我给你我用于 ANN 的代码。

编辑:数据集的描述:我正在使用 x=[-1:1] 和 Y=[-1,1] 的二维数据集,在两个维度上的两个连续点之间的步长为 0.001。让类标签使得半径为 0.5 且中心在 (0,0) 的圆内或圆上的任何东西都是正常的(1 类),圆外的任何东西都是 0(0 类)。训练后,我使用相同的训练集作为测试集。目前,圆上的边界点和边界内外的一个小邻域被分类为 0.3 到 0.7。只有圆内的点是 1,圆外的点是 0。我认识到这是输出层的 sigmoid 激活函数的行为。我需要它来识别边界上的点与边界外 0.001 单位外的点和边界内 0.001 单位外的点之间的差异。

from keras.models import Sequential
from keras.layers import Dense
from sklearn.cross_validation import train_test_split as tts
from keras.callbacks import EarlyStopping as es
from keras import optimizers as op
"""Creating the model"""
model=Sequential()
model.add(Dense(12,input_dim=c,activation='relu')) #input layer (c is the dimensionality of my dataset)
for i in range(0,hidden_layer_size):
    model.add(Dense(12,activation='relu')) #hidden layers
model.add(Dense(1,activation='sigmoid')) #output layer

"""Compiling the model"""
adam=op.Adam(lr=0.0007)
model.compile(loss='binary_crossentropy', optimizer=adam, metrics=['accuracy'])

"""Fit the model"""
early=es(monitor='acc',min_delta=0.0005,patience=2)
model.fit(features_train,labels_train, epochs=epochs, batch_size=30,callbacks=[early],verbose=2)

"""Evaluation"""
scores=model.evaluate(features_test,labels_test)
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))

【问题讨论】:

  • 你有复制的例子吗?你的问题很广泛
  • 是的,对不起。我已经包括了我的 ANN。不幸的是,由于保密问题,我无法提供数据。
  • 然后提供一组说明问题的虚拟数据。
  • @Prune 是的,谢谢。我已经描述了一个虚拟数据集以及我在编辑中面临的问题。
  • 我的关闭投票是有效的。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 On topichow to ask 在这里申请。

标签: python-3.x machine-learning neural-network keras artificial-intelligence


【解决方案1】:

在神经网络中并没有真正的“分辨率”概念。如果您的模型对某些样本进行了错误分类,那么您要么需要更好的模型,要么需要更多数据,甚至需要额外的正则化。

如果不对模型进行广泛的测试,就很难预测出什么问题,所以这是你必须要做的事情。

【讨论】:

  • 谢谢马蒂亚斯。我不确定你所说的同等分类是什么意思。如果您说必须将彼此落在特定范围内的样本归为同一类,那么不是。那不是我想要做的。我希望 ANN 区分 1.000 和 1.001,而不是给它们相同的类标签。我的训练数据集包含按 0.001 顺序分隔的样本,所以我不知道为什么我的 ANN 没有知道这种分隔很重要。
  • @PranavKoustubh 啊,我明白了,为此你只需要一个更好的模型或不同的标准化方案。
  • 我正在将我的输入标准化为 [-1,1] 范围。对于二进制分类,我的输出标签是 {0,1},没有中间值。我似乎想不出更好的模型。也许我缺乏相应的知识。你会推荐什么?
  • @PranavKoustubh 不,不是真的。这个网站不是用来提出建议的,它是你必须尝试的东西。
  • 我明白这一点。但我一直在寻找一些方向。时间对我来说是一个因素,到目前为止没有任何效果。但感谢您的投入。
猜你喜欢
  • 2014-12-19
  • 2020-02-13
  • 2015-07-20
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 2019-07-17
相关资源
最近更新 更多