【发布时间】:2021-07-23 18:33:40
【问题描述】:
我尝试为 CNN 进行数据扩充,但收到错误消息“无法找到可以处理输入的数据适配器:
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten, Conv2D, MaxPooling2D
from tensorflow.keras.preprocessing.image import ImageDataGenerator
(x_train, y_train) , (x_test, y_test) = datasets.cifar10.load_data()
img_width, img_height, img_num_channels = 32, 32, 3
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255.0
x_test /= 255.0
input_shape = (img_width, img_height, img_num_channels)
CNN used
train_datagen = ImageDataGenerator(rescale=1./255, rotation_range=45, shear_range=0.2,
zoom_range=0.2, horizontal_flip=True)
validation_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow(x_train, y_train, batch_size=100)
batch_size=100
model.fit_generator(train_generator,
steps_per_epoch = 2000 //batch_size, epochs =2,
validation_data = validation_datagen,
validation_steps = 800 //batch_size)
score = model.evaluate(x_test, y_test)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
predictions = model.predict([x_test])
#print(predictions)
print(np.argmax(predictions[0]))
img_path = x_test[0]
print(img_path.shape)
if(len(img_path.shape) == 3):
plt.imshow(np.squeeze(img_path))
elif(len(img_path.shape) == 2):
plt.imshow(img_path)
else:
print("Image cannot be shown")
【问题讨论】:
标签: python tensorflow machine-learning keras deep-learning