前提・実現したいこと
多クラス分類のモデルを使って新しいデータに対する精度を確認したいのですが、numpy arrayがおかしいというエラーが出てしまいます。
お手数をお掛けしますが解決方法についてどなたか教えていただけないでしょうか。
発生している問題・エラーメッセージ
ValueError Traceback (most recent call last) <ipython-input-5-d660de2e47ce> in <module>() 52 #arcface_model = Model(inputs=arcface_model.input[0], outputs=arcface_model.layers[-3].output) 53 #print(arcface_model.input[0], arcface_model.layers[-3].output)# Tensor("strided_slice:0", shape=(28, 28, 1), dtype=float32) Tensor("flatten_1_15/Reshape:0", shape=(?, ?), dtype=float32) ---> 54 arcface_features = arcface_model.predict(X_test, verbose=1) 55 #arcface_features /= np.linalg.norm(arcface_features, axis=1, keepdims=True) 56 2 frames /usr/local/lib/python3.6/dist-packages/keras/engine/training_utils.py in standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix) 100 'Expected to see ' + str(len(names)) + ' array(s), ' 101 'but instead got the following list of ' + --> 102 str(len(data)) + ' arrays: ' + str(data)[:200] + '...') 103 elif len(names) > 1: 104 raise ValueError( ValueError: Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 2 array(s), but instead got the following list of 1 arrays: [array([[[[0.], [0.], [0.], ..., [0.], [0.], [0.]], [[0.], [0.], [0.], ..., [0.], [0.], ...
該当のソースコード
Python
1import time 2import os 3import math 4import argparse 5from glob import glob 6from collections import OrderedDict 7import random 8import warnings 9from datetime import datetime 10import joblib 11import matplotlib.pyplot as plt 12from mpl_toolkits.mplot3d import Axes3D 13 14 15import numpy as np 16import pandas as pd 17 18from sklearn.model_selection import KFold, StratifiedKFold 19from sklearn.manifold import TSNE 20from sklearn.decomposition import PCA 21from sklearn.metrics import accuracy_score 22from sklearn import metrics 23 24import keras 25from keras.datasets import mnist 26from keras.preprocessing.image import ImageDataGenerator 27from keras.models import Sequential, load_model, Model 28from keras.layers import Dense, Dropout, Activation, Flatten 29from keras.layers import Conv2D, MaxPooling2D 30from keras.models import load_model 31from keras.optimizers import SGD, Adam 32from keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau, CSVLogger, LearningRateScheduler 33 34import archs 35from metrics import * 36from scheduler import * 37 38import h5py 39 40(X, y), (X_test, y_test) = mnist.load_data() 41 42X = X[:, :, :, np.newaxis].astype('float32') / 255 43print('X:', X.shape) # X: (60000, 28, 28, 1) 44X_test = X_test[:, :, :, np.newaxis].astype('float32') / 255 45print('X_test:', X_test.shape)# X_test: (10000, 28, 28, 1) 46y_ohe = keras.utils.to_categorical(y, 10) 47print('y_ohe:', y_ohe.shape)# y_ohe: (60000, 10) 48y_ohe_test = keras.utils.to_categorical(y_test, 10) 49print('y_ohe_test:', y_ohe_test.shape)# y_ohe_test: (10000, 10) 50 51arcface_model = load_model('./models/mnist_vgg8_arcface_3d/model.hdf5', custom_objects={'ArcFace': ArcFace}) 52#arcface_model = Model(inputs=arcface_model.input[0], outputs=arcface_model.layers[-3].output) 53arcface_features = arcface_model.predict(X_test, verbose=1) 54#arcface_features /= np.linalg.norm(arcface_features, axis=1, keepdims=True) 55 56accuracy = accuracy_score(y_ohe_test, arcface_features) # 正解データと比較し、精度算出 57print('{:.2%}'.format(accuracy))
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。