#python #deep-learning
Вопрос:
Здравствуйте, я делаю множественную классификацию изображений, и я хочу построить 3 изображения из каждой категории вот код
i=0
labels=[]
for label in y_train:
if not label in labels :
labels.append(label)
print("Category : ", y_train[i])
plt.imshow(plt.imread(train_dir "/" train_files[i]))
plt.show()
i =1
if len(labels)==11:
break
print('[INFO] done')
этот код отображает только одно изображение из каждой категории, как я могу изменить его, чтобы отобразить 3 изображения из 11 категорий.
Я новичок во всем этом.
Спасибо
Ответ №1:
вы можете использовать диктант вместо списка:
import matplotlib.pyplot as plt
i=0
labels={}
y_train = ['a','b','c','a','b','c','a','b','c','a','b','c','a','b','c']
for label in y_train:
if not label in labels :
labels[label] = 0
else:
labels[label] = 1
if labels[label] <3:
print("Category : ", y_train[i])
#plt.imshow(plt.imread(train_dir "/" train_files[i]))
plt.plot(1,1,'ko')
plt.text(1,1,f'{label} --> plot {labels[label]}')
plt.show()
i =1
if len(labels)==11:
break
print('[INFO] done')
Согласно вашему комментарию. Если вы хотите, чтобы они были на одном участке, и они не отображаются отсортированными, и вы заранее не знаете, сколько у вас меток и участков, вам нужен такой двухэтапный процесс, как этот.
import matplotlib.pyplot as plt
i=0
mydict={}
y_train = ['a','b','c','a','b','c','a','b','c','a','b','c','a','b','c']
for label in y_train:
if not label in mydict :
mydict[label] = {}
if len (mydict[label]) < 3:
print(f"Storing data for {label} image {len(mydict[label])}")
image_No = len(mydict[label])
mydict[label][image_No] = {}
mydict[label][image_No]["xdata"] = 1
mydict[label][image_No]["ydata"] = 1
for label in mydict:
plt.figure()
for im in mydict[label]:
plt.subplot(1,3,im 1)
plt.plot(mydict[label][im]["xdata"],mydict[label][im]["xdata"],'ko')
plt.text(mydict[label][im]["xdata"],mydict[label][im]["xdata"],label)
plt.show()
Комментарии:
1. Это вроде как работает, но мне нужно, чтобы он показывал 3 изображения из одних и тех же категорий в одном ряду, я не знаю, ясно ли это