TensorFlowによる2タイプ画像分類についてのご質問
Q&A
Closed
解決したいこと
tf版kerasで写真を sakura であるか、sakura以外であるか という画像認識アプリを作りたく考えております。
その際に下記のようなエラーが発生しました。
解決方法をご教授いただきたく思います。
ファイル構成は
├test.py (当該pythonファイル)
└Data┬sakura-jpg画像
└others-jpg画像
となっております。
なお、tensorflow初学者で、理解ができていないことが多々あり申し訳ございません。
発生している問題・エラー
ValueError: Input 0 of layer sequential is incompatible with the layer: expected axis -1 of input shape to have value 784 but received input with shape (None, 224, 224, 3)
該当するソースコード
import tensorflow as tf
import glob
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential
from keras.preprocessing.image import ImageDataGenerator, img_to_array, load_img
from keras.layers import Input, Activation, Dropout, Flatten, Dense
X = []
Y = []
BATCH_SIZE=128
NUM_EPOCHS=20
for i in glob.glob('Data/sakura/*.jpg'):
X.append(img_to_array(load_img(i, grayscale=False, color_mode='rgb', target_size=(224,224))))
Y.append('sakura')
for i in glob.glob('Data/others/*.jpg'):
X.append(img_to_array(load_img(i, grayscale=False, color_mode='rgb', target_size=(224,224))))
Y.append('others')
X = np.array(X)
X = X.astype("float")/255
Y = np.array(Y)
model = Sequential([
Dense(32, input_dim=784, activation='relu'),
Dense(2, activation='softmax')
])
model.compile('adam', 'categorical_crossentropy', metrics=['accuracy'])
model.fit(X, Y, batch_size=BATCH_SIZE, epochs=NUM_EPOCHS, validation_split=0.2)
plt.plot(model.history['acc'])
plt.plot(model.history['val_acc'])
plt.title('Model accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'], loc='upper left')
plt.show()
# Plot training & validation loss values
plt.plot(model.history['loss'])
plt.plot(model.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'], loc='upper left')
plt.show()