ValueError: in user code:が出ます。
解決したいこと
pythonの勉強を始めて2日目の超初心者です。
https://youtu.be/i3ZIRJYlzkU
この動画をもとに、GooGle Colaboratoryで画像解析のプログラムを作っていたのですが、ValueError: in user code:が出ます。
どなたか原因が分かる方はご教授いただけると幸いです。
よろしくお願いします。
発生している問題・エラー
該当するソースコード
#ドライブの準備
from google.colab import drive
drive.mount('/content/drive')
#画像の前処理
import os
import cv2
import numpy as np
import glob as glob
from sklearn.model_selection import train_test_split
from keras.utils import np_utils
#フォルダをクラス名にする
path = './images'
folders = os.listdir(path)
classes =[f for f in folders if os.path.isdir(os.path.join(path, f))]
n_classes = len(classes)
classes
#画像とラベルの格納
X = []
Y = []
for label, class_name in enumerate(classes):
files = glob.glob("./images/" + class_name + "/*.jpg")
for file in files:
img = cv2.imread(file)
img = cv2.resize(img, dsize=(224, 224))
X.append(img)
Y.append(label)
X[0]
X = np.array(X)
X = X.astype('float32')
X /= 255.0
X[0]
Y[:5]
#ラベルの変換
Y = np.array(Y)
Y = np_utils.to_categorical(Y,n_classes)
Y[:5]
#学習データとテストデータに分ける
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2)
print(X_train.shape)
print(X_test.shape)
print(Y_train.shape)
print(Y_test.shape)
from keras.applications.vgg16 import VGG16
from keras.models import Sequential
from keras.models import model_from_json
from keras.models import Model
from keras.layers import Input, Activation, merge, Dense, Flatten, Dropout
from tensorflow.keras.optimizers import Adam
#vgg16
input_tensor = Input(shape=(244, 244, 3))
base_model = VGG16(weights='imagenet', input_tensor=input_tensor, include_top=False)
#後付け
top_model = Sequential()
top_model.add(Flatten(input_shape=base_model.output_shape[1:]))
top_model.add(Dense(n_classes, activation='softmax'))
#結合
model = Model(inputs=base_model.input, outputs=top_model(base_model.output))
#学習させない層
for layer in model.layers[:15]:
layer.trainable = False
print('# layers = ', len(model.layers))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acccuracy'])
model.summary()
###ここから先のコード実行でエラーが出ました。
#trainデータで学習
model.fit(X_train, Y_train, epochs=20, batch_size=16)
#テストデータで精度確認
score = model.evaluate(X_test, Y_test, batch_size=16)
