帮我找几段使用TensorFlow进行多种图像分类的代码
时间: 2024-05-01 14:16:12 浏览: 12
以下是使用TensorFlow进行多种图像分类的代码示例:
1. Image Classification using CNN:
```
import tensorflow as tf
# Load data
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.cifar10.load_data()
# Encode labels
train_labels = tf.keras.utils.to_categorical(train_labels)
test_labels = tf.keras.utils.to_categorical(test_labels)
# Normalize data
train_images = train_images.astype('float32')/255
test_images = test_images.astype('float32')/255
# Define model
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(32, 32, 3)),
tf.keras.layers.MaxPooling2D((2,2)),
tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D((2,2)),
tf.keras.layers.Conv2D(128, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D((2,2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
# Compile model
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
# Train model
model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
```
2. Image Classification using Transfer Learning:
```
import tensorflow as tf
# Load VGG16 model
base_model = tf.keras.applications.VGG16(include_top=False, input_shape=(224, 224, 3))
# Freeze base layers
for layer in base_model.layers:
layer.trainable = False
# Add new classification layers
x = base_model.output
x = tf.keras.layers.GlobalAveragePooling2D()(x)
x = tf.keras.layers.Dense(256, activation='relu')(x)
x = tf.keras.layers.Dense(10, activation='softmax')(x)
# Combine base and new layers
model = tf.keras.models.Model(inputs=base_model.input, outputs=x)
# Compile model
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
# Load data
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.cifar10.load_data()
# Encode labels
train_labels = tf.keras.utils.to_categorical(train_labels)
test_labels = tf.keras.utils.to_categorical(test_labels)
# Normalize data
train_images = train_images.astype('float32')/255
test_images = test_images.astype('float32')/255
# Train model
model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
```
3. Image Classification using Data Augmentation:
```
import tensorflow as tf
# Load data
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.cifar10.load_data()
# Encode labels
train_labels = tf.keras.utils.to_categorical(train_labels)
test_labels = tf.keras.utils.to_categorical(test_labels)
# Normalize data
train_images = train_images.astype('float32')/255
test_images = test_images.astype('float32')/255
# Define data augmentation
data_gen = tf.keras.preprocessing.image.ImageDataGenerator(
rotation_range=20,
width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=True)
# Define model
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(32, 32, 3)),
tf.keras.layers.MaxPooling2D((2,2)),
tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D((2,2)),
tf.keras.layers.Conv2D(128, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D((2,2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
# Compile model
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
# Train model with data augmentation
model.fit(data_gen.flow(train_images, train_labels, batch_size=32),
epochs=10,
validation_data=(test_images, test_labels))
```