【发布时间】:2021-08-13 09:30:17
【问题描述】:
我有这个 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个输出类。颜色识别问题。
【问题讨论】:
-
1) 您是使用 GPU 还是 CPU 进行训练?使用 GPU,即使您设置了随机种子,cuda 也会产生一些可变性。尝试 os.environ["CUDA_VISIBLE_DEVICES"] = "-1" 并将种子设置为固定值。第二点不应该在这里发布,因为这是一个理论问题。也许在最先进的情况下寻找一些好的模型
-
我正在使用 GPU。它有效,但我的时代现在需要更长的时间,从 7 秒到 61 秒。为什么? os.environ["CUDA_VISIBLE_DEVICES"] = "-1" 是什么意思?
-
@FaneSpoitoru
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"基本上对 TensorFlow 隐藏了 GPU,因此您的模型将在 CPU 上进行训练,因此您永远不应该这样做。有关该主题的更多详细信息,您应该阅读this。 -
@jackve 如果您要发布答案并且如果它有一些后果,那么您也必须发布它们,特别是在这种情况下,当将该环境变量设置为 -1 的后果很大时。
标签: python tensorflow deep-learning