在同一CNN上准确度不同



我有这个CNN:

def cnn(trainImages, trainLabels, testImages, testLabels):
trainImages = np.array(trainImages)
trainLabels = np.array(trainLabels)
testImages = np.array(testImages)
testLabels = np.array(testLabels)
trainImages = trainImages / 255
testImages = testImages / 255
model = Sequential()
model.add(Conv2D(filters = 32, kernel_size = (3, 3), padding = 'same', activation = 'relu', input_shape = (224, 224, 3)))
model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))
model.add(Conv2D(filters = 64, kernel_size = (3, 3), padding = 'same', activation = 'relu'))
model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))
model.add(Conv2D(filters = 128, kernel_size = (3, 3), padding = 'same', activation = 'relu'))
model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))
model.add(Flatten())
model.add(Dense(256, activation = 'relu'))
model.add(Dense(9))
model.compile(optimizer = 'adam', loss = tensorflow.keras.losses.SparseCategoricalCrossentropy(from_logits = True), metrics = ['accuracy'])
model.fit(trainImages, trainLabels, epochs = 10)
predictionResult = model.predict(testImages)
pred = []
for i in range(len(predictionResult)):
pred.append(np.argmax(predictionResult[i], axis = -1))
print('Accuracy: ', metrics.accuracy_score(testLabels, pred))
print(metrics.classification_report(testLabels, pred))
print(metrics.confusion_matrix(testLabels, pred))

1)。每次我运行CNN的准确率都不一样,在87%到93%之间。当我运行相同的精度时,我如何获得永久?我试过tensorflow.set_random_seed(),但没有效果。

2)。我应该怎样改进我的人际关系才能达到95%以上?输入形状为(224,224,3),训练图像2831张,测试图像665张。9个输出类。一个颜色识别的问题。

正如我在评论中发表的那样,这种行为的一种可能性是使用gpu: cuda引入了一些小的可变性,因此你可以体验到以相同方式训练的两个模型的准确性的一些波动。你可以尝试禁用GPU:

os.environ["CUDA_VISIBLE_DEVICES"] = "-1"

和以前一样设置种子。然而,这将限制您的性能,您将需要更多的时间来完成相同的训练,因为您将只使用cpu而不是GPU

相关内容

  • 没有找到相关文章

最新更新