https://colab.research.google.com/drive/1EdCL6YXCAvKqpEzgX8zCqWv51Yum2PLO?usp=sharing
你好,
上面,我试图用 tensorflow 在牙科 X 射线上识别 5 种不同类型的修复体。我正在使用官方文档来执行这些步骤,但现在我有点卡住了,我需要帮助。这是我的问题:
1
-我的数据在我的本地磁盘上。上面链接中的 TF 示例从不同的存储库下载数据。当我想测试我的图像时,除了使用下面的代码之外,我还有其他方法吗?:
import numpy as np
from keras.preprocessing import image
from google.colab import files
uploaded = files.upload()
# predicting images
for fn in uploaded.keys():
path = fn
img = image.load_img(path, target_size=(180, 180))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
images = np.vstack([x])
classes = model.predict(images)
print(fn)
print(classes)
我问这个是因为官方文档只是显示了逐个测试图像的方法,如下所示:
img = keras.preprocessing.image.load_img(
sunflower_path, target_size=(img_height, img_width)
)
img_array = keras.preprocessing.image.img_to_array(img)
img_array = tf.expand_dims(img_array, 0) # Create a batch
predictions = model.predict(img_array)
score = tf.nn.softmax(predictions[0])
print(
"This image most likely belongs to {} with a {:.2f} percent confidence."
.format(class_names[np.argmax(score)], 100 * np.max(score))
)
2
- 我正在使用“image_dataset_from_directory”方法,所以我没有单独的验证目录。那样行吗 ?还是我应该使用 ImageDataGenerator ?为了测试我的数据,我手动从所有 5 个类别中随机挑选了一些数据,并将它们放入我的测试文件夹中,该文件夹有 5 个子文件夹,因为我有那个数量的类别。这是我应该做的预测,还将测试数据分成不同的文件夹吗?如果是,我如何在测试时同时加载所有这 5 个文件夹?
3
- 我还应该创建混淆矩阵。但我不明白如何将其应用于我的代码?其他人说,使用 scikit-learn 的混淆矩阵,但这次我必须定义 y-true、y_pred 值,我无法将其放入此代码中。我应该为 5 个不同的预测评估 5 个不同的混淆矩阵吗?如何?
4
- 有时,我观察到验证准确度开始远高于训练准确度。这不寻常吗?在 3-4 个 epoch 之后,训练准确度会超过验证准确度,并以更平衡的方式继续。我认为这不应该发生。一切还好吗 ?
5
- 最后一个问题,为什么第一个 epoch 比其他 epoch 需要更长的时间?在我的设置中,完成第一个 epoch 大约需要 30-40 分钟,然后每隔一个 epoch 只需大约一分钟左右。有没有办法解决它或者它总是以同样的方式发生?
谢谢。