import tensorflow as tf
import matplotlib.pyplot as plt
import os,PIL
# 设置随机种子尽可能使结果可以重现
import numpy as np
np.random.seed(1)
# 设置随机种子尽可能使结果可以重现
import tensorflow as tf
tf.random.set_seed(1)
from tensorflow import keras
from tensorflow.keras import layers,models
import pathlib
data_dir='/content/drive/MyDrive/DL/DL 100例/天气5/第5天/weather_photos/'
data_dir=pathlib.Path(data_dir)
# 查看数据
roses=list(data_dir.glob('sunrise/*.jpg'))
roses
PIL.Image.open(roses[0])

# 加载数据
batch_size = 32
img_height = 180
img_width = 180
train_ds=tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset='training',
seed=123,
image_size=(img_height,img_width),
batch_size=batch_size
)
Found 1125 files belonging to 4 classes.
Using 900 files for training.
val_ds=tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset='validation',
seed=123,
image_size=(img_height,img_width),
batch_size=batch_size
)
Found 1125 files belonging to 4 classes.
Using 225 files for validation.
class_name=train_ds.class_names
class_name
['cloudy', 'rain', 'shine', 'sunrise']
plt.figure(figsize=(20, 10))
for images, labels in train_ds.take(1):
for i in range(20):
ax = plt.subplot(5, 10, i + 1)
plt.imshow(images[i].numpy().astype("uint8"))
plt.title(class_name[labels[i]])
plt.axis("off")

for image_batch, labels_batch in train_ds:
print(image_batch.shape)
print(labels_batch.shape)
break
(32, 180, 180, 3)
(32,)
AUTOTUNE = tf.data.AUTOTUNE
train_ds = train_ds.cache().shuffle(1000).prefetch(buffer_size=AUTOTUNE)
val_ds = val_ds.cache().prefetch(buffer_size=AUTOTUNE)