keras ValueError:包含多个元素的数组的真值不明确,请使用.any()或.all(),当使用dataset_from_directory时

yiytaume  于 2023-04-12  发布在  其他
关注(0)|答案(1)|浏览(189)

想要将目录中的图像转换为tf.dataset.Dataset格式的Tensor,所以=〉tf.keras.utils.image_dataset_from_directory:* 从目录中的图像文件生成tf.data.Dataset *
labels:“inferred”(标签从目录结构中生成)、None(无标签)、或与目录中找到的图像文件数量相同大小的整数标签列表/元组。标签应根据图像文件路径的字母数字顺序进行排序(通过Python中的os.walk(directory)获得)。[来自文档]
首先我把标签编码

from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
y_train = encoder.fit_transform(list(y_train["breed"]))

然后在使用时

train_ds = tf.keras.utils.image_dataset_from_directory(
  TRAIN_IMG_PATH,
  labels=y_train,
  label_mode='int',
  validation_split=0.2,
  subset="training",
  seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size
)

得到错误

/opt/conda/lib/python3.7/site-packages/keras/utils/image_dataset.py:163: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  if labels not in ("inferred", None):

...

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
fd3cxomn

fd3cxomn1#

试试这个,我想它会起作用的。如果你遇到问题,让我知道

from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
y_train = encoder.fit_transform(list(y_train["breed"]))
train_ds = tf.keras.utils.image_dataset_from_directory(
  TRAIN_IMG_PATH,
  labels=y_train.ravel(),
  label_mode='int',
  validation_split=0.2,
  subset="training",
  seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size
)

相关问题