【发布时间】:2021-04-14 17:26:33
【问题描述】:
无法找出错误。测试目录包含两个子文件夹,子文件夹内有图像(.jpg)文件。我试图找到模型的准确性。必须以哪种格式读取测试目录?我究竟做错了什么?在这个项目中,我正在尝试进行迁移学习来训练 用于胸部 X 射线数据集的图像识别模型。
import os
from PIL import Image
import numpy as np
import tensorflow as tf
from tensorflow import keras
test_dataset = 'C:\\Users\\arjun\\Desktop\\Rashmi\\Courses\\Deep Learning\\Project 2\\chest-xray-pneumonia\\chest_xray\\chest_xray\\test'
train_dataset = 'C:\\Users\\arjun\\Desktop\\Rashmi\\Courses\\Deep Learning\\Project 2\\chest-xray-pneumonia\\chest_xray\\chest_xray\\train'
batch_size=8
tf.keras.preprocessing.image_dataset_from_directory(
train_dataset,
labels="inferred",
label_mode="int",
class_names=None,
color_mode="rgb",
batch_size=batch_size,
image_size=(256, 256),
shuffle=True,
seed=None,
validation_split=None,
subset=None,
interpolation="bilinear",
follow_links=False,
)
base_model = tf.keras.applications.VGG16(include_top=False,
weights='imagenet',
input_shape=(150,150,3),
pooling='avg')
base_model.trainable = False
inputs = keras.Input(shape=(150,150,3))
x = base_model(inputs, training = False)
x = keras.layers.Flatten()(x)
x = keras.layers.Dense(512, kernel_initializer = 'he_normal', activation = 'relu')(x)
predictions = keras.layers.Dense(1, activation = 'sigmoid')(x)
transfer_model = keras.Model(inputs, predictions)
print(transfer_model.summary())
transfer_model.compile(loss='categorical_crossentropy',
optimizer=keras.optimizers.SGD(lr=1e-4,momentum=0.9),
metrics=['accuracy'])
transfer_model.fit(train_dataset,
epochs = 2,
shuffle=True,
verbose=1,
validation_data = test_dataset)
transfer_model.fit(train_dataset,
epochs = 2,
shuffle=True,
verbose=1,
validation_data = test_dataset)
Traceback (most recent call last):
File "<ipython-input-104-a543f53dce65>", line 5, in <module>
validation_data = test_dataset)
File "C:\Users\arjun\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1064, in fit
steps_per_execution=self._steps_per_execution)
File "C:\Users\arjun\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\data_adapter.py", line 1112, in __init__
model=model)
File "C:\Users\arjun\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\data_adapter.py", line 650, in __init__
**kwargs)
File "C:\Users\arjun\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\data_adapter.py", line 273, in __init__
num_samples = set(int(i.shape[0]) for i in nest.flatten(inputs)).pop()
File "C:\Users\arjun\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\data_adapter.py", line 273, in <genexpr>
num_samples = set(int(i.shape[0]) for i in nest.flatten(inputs)).pop()
File "C:\Users\arjun\Anaconda3\lib\site-packages\tensorflow\python\framework\tensor_shape.py", line 889, in __getitem__
return self._dims[key].value
IndexError: list index out of range
【问题讨论】:
-
image_dataset_from_directory返回一个tf.data.Dataset对象。您需要将该对象传递给model.fit。目前您正在传递train_dataset这是文件路径。 -
参考this
标签: python tensorflow keras deep-learning