python-3.x - 神经网络的分辨率取决于哪些因素?

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

我在 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))

最佳答案

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

如果不广泛测试模型,就很难预测问题出在哪里,因此这是您必须做的事情。

关于python-3.x - 神经网络的分辨率取决于哪些因素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49895030/

相关文章:

python - 确保用户在 Python 中指定两个函数参数之一且仅指定一个的最佳方法

python - 为什么在使用 torch.utils.data.ConcatDataset 连接 pytorch 中的两个数据集时图像不对齐?

artificial-intelligence - 专家系统中的修剪推导

image - Tensorflow - 洗牌和分割图像和标签的数据集

python - 如何对 Keras 中的整个模型应用权重归一化?

python - pip 错误 : Fatal error in launcher: Unable to create process using '"'

python-3.x - 如何在不使用 @hydra.main() 的情况下获取 Hydra 配置

python - 使用 itertools.accumulate 计算后缀最大值

python-3.x - scikit-learn FunctionTransformer 的用途是什么?

machine-learning - 使用 keras 的 RNN 编码器解码器