我现在开始用Tensorflow在Python中学习CNN。我知道Tensorflow使用CUDA,所以我尝试使用Tensorflow directml,因为我使用的是AMD gpu(RX 580和I3 10100f CPU(。我尝试使用CIFAR-10数据集建立一个物体检测的基本模型,该模型为
model = models.Sequential()
model.add(layers.Conv2D( 32, (3,3), activation='relu', input_shape=(32,32,3) ) )
model.add(layers.MaxPooling2D( (2,2) ))
model.add(Dropout(0.1))
model.add(layers.Conv2D( 64, (3,3), activation='relu' ) )
model.add(layers.MaxPooling2D( (2,2) ))
model.add(Dropout(0.1))
model.add(layers.Conv2D( 128, (3,3), activation='relu' ) )
model.add(layers.MaxPooling2D( (2,2) ))
model.add(Dropout(0.1))
model.add(layers.Flatten())
model.add(layers.Dense(128, activation= 'relu'))
model.add(layers.Dense(10))
注意:使用默认学习率的Adam优化器进行处理。
我的问题不是什么是合适的模型,而是为什么tensorflow CPU的性能比tensorflow directml快。使用我的CPU处理1个具有50000个训练数据的历元大约需要3分钟,而使用directml处理1个带有50000个训练信息的历元需要大约13分钟。是什么导致了这种性能差异?在什么情况下我应该使用GPU或CPU?
这可能是因为您拥有比gpu更现代的cpu。我在我的cpu(R55500(上运行了一个CNN,它只比我的gpu(Radeon RX 5600XT(慢一点。