我正在使用Keras图像数据生成器进行数据增强,以及其中的flow_from_dataframe函数。https://www.tensorflow.org/api_docs/python/tf/keras/preprocessing/image/ImageDataGenerator#flow_from_dataframe
# Create new dataframes for train and test
df_train = pd.DataFrame()
df_train['image'], df_train['labels'] = X_train, y_train
df_test = pd.DataFrame()
df_test['image'], df_test['labels'] = X_test, y_test
这是一个 Dataframe 的外观:
image labels
4227 /Users/m/Documents/Machine Learning Pr... [73, 0]
4676 /Users/m/Documents/Machine Learning Pr... [36, 0]
800 /Users/m/Documents/Machine Learning Pr... [26, 0]
3671 /Users/m/Documents/Machine Learning Pr... [42, 0]
这是我导入数据生成器的方式:
from keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(
rescale = 1./255,
rotation_range = 40,
width_shift_range = 0.2,
height_shift_range = 0.2,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True,
fill_mode = 'nearest'
)
test_datagen= ImageDataGenerator(rescale=1./255.)
train_generator=datagen.flow_from_dataframe(
dataframe = df_train,
x_col="image",
y_col="labels",
batch_size=32,
seed=42,
shuffle=True,
class_mode='multi_output',
target_size=(128, 128))
valid_generator = test_datagen.flow_from_dataframe(
dataframe = df_test,
x_col = "image",
y_col = "labels",
batch_size = 32,
seed = 42,
shuffle = True,
class_mode='multi_output',
target_size=(128, 128))
该函数读入一个 Dataframe ,但在文档中它指出指定的y_col必须是一个列表:
y_col字符串或列表, Dataframe 中包含目标数据的列。
在我创建dataframe之前,该列是一个列表,但现在它是panda中的一个列,它不再被分类为'list',对吗?那么为什么我会收到这个错误消息:
TypeError: If class_mode="multi_output", y_col must be a list. Received str.
我想使用如上所述的类模式多输出,它声明y_col必须是一个列表,但它是一个字符串。不知道为什么它声明它是一个字符串?是否有任何方法可以更改** Dataframe 内**列的“类型”?或者我误解了?
1条答案
按热度按时间eulz3vhy1#
此处的“列表”表示列名的列表。
正如Zelemist所说,改变你的 Dataframe ,使之有两列而不是一列。
然后在y_col中输入一个列表,例如:
希望现在说得通了。