除了解析文件名外,还获取 class Keras 的 ImageDataGenerator 图像信息
Get class info of Keras' ImageDataGenerator images besides parsing filename
我从验证目录(和测试目录)中的两个目录(两个 class 加载了 ImageGenerator
及其 flow_from_dirctory-function
的图像,名称为 "cats" 和 "dogs":
validation_generator = test_datagen.flow_from_directory(
root_dir + '/validate',
target_size=(img_x, img_y),
batch_size=batch_size,
color_mode='grayscale',
class_mode='input', # necessarry for autoencoder
shuffle=False, # must be false otherwise filenames are wrong
seed = seed)
在使用了一些 Keras 模型生成和拟合后,我想调试示例图像:我想从 validation_generator
和 运行 模型中获取图像。但是我必须知道图像首先位于哪个目录中,或者它被分配到 class。
为了绘图我使用:
import matplotlib.pyplot as plt
n = 7
x,y = validation_generator.next()
for i in range(0,n):
image_x = x[i,:,:,0]
#print(validation_generator.class_indices) # always shows the same
print(validation_generator.filenames[i]) # only OK if shuffle=false
plt.imshow(image_x)
plt.show()
我只能找到解析 validation_generator.filenames[i]
并获取它的目录的可能性。还有其他更优雅的方法吗?
class_indices
属性是一个字典,其中包含从 class 名称到 class 索引的映射,因此对于生成器生成的每个数据示例来说,这确实是相同的。您可以按如下方式从 y
访问 image_x
的标签:
label_x = y[i]
自动编码器似乎没有优雅的方式,所以我 post 我的古怪方式:
import matplotlib.pyplot as plt
import os
n = 7
x,y = validation_generator.next()
for i in range(0,n):
plt.figure(figsize=(2, 2))
image_x = x[i,:,:,0]
image_label = os.path.dirname(validation_generator.filenames[i]) # only OK if shuffle=false
print(image_label)
plt.imshow(image_x)
plt.show()
validation_generator.class_indices # ==> return: {'ants': 0, 'bees': 1}
我从验证目录(和测试目录)中的两个目录(两个 class 加载了 ImageGenerator
及其 flow_from_dirctory-function
的图像,名称为 "cats" 和 "dogs":
validation_generator = test_datagen.flow_from_directory(
root_dir + '/validate',
target_size=(img_x, img_y),
batch_size=batch_size,
color_mode='grayscale',
class_mode='input', # necessarry for autoencoder
shuffle=False, # must be false otherwise filenames are wrong
seed = seed)
在使用了一些 Keras 模型生成和拟合后,我想调试示例图像:我想从 validation_generator
和 运行 模型中获取图像。但是我必须知道图像首先位于哪个目录中,或者它被分配到 class。
为了绘图我使用:
import matplotlib.pyplot as plt
n = 7
x,y = validation_generator.next()
for i in range(0,n):
image_x = x[i,:,:,0]
#print(validation_generator.class_indices) # always shows the same
print(validation_generator.filenames[i]) # only OK if shuffle=false
plt.imshow(image_x)
plt.show()
我只能找到解析 validation_generator.filenames[i]
并获取它的目录的可能性。还有其他更优雅的方法吗?
class_indices
属性是一个字典,其中包含从 class 名称到 class 索引的映射,因此对于生成器生成的每个数据示例来说,这确实是相同的。您可以按如下方式从 y
访问 image_x
的标签:
label_x = y[i]
自动编码器似乎没有优雅的方式,所以我 post 我的古怪方式:
import matplotlib.pyplot as plt
import os
n = 7
x,y = validation_generator.next()
for i in range(0,n):
plt.figure(figsize=(2, 2))
image_x = x[i,:,:,0]
image_label = os.path.dirname(validation_generator.filenames[i]) # only OK if shuffle=false
print(image_label)
plt.imshow(image_x)
plt.show()
validation_generator.class_indices # ==> return: {'ants': 0, 'bees': 1}