python - 数据基数不明确:x 大小:25838 y 大小:3589 确保所有数组包含相同数量的样本
问题描述
我正在尝试在 FER2013 测试集中使用超参数优化,但我无法克服这个问题......任何帮助或建议。
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import os
import cv2 as cv
import glob as gb
# Importing Deep Learning Libraries
import tensorflow as tf
from tensorflow import keras
import numpy as np
from keras.preprocessing.image import load_img, img_to_array
from keras.preprocessing.image import ImageDataGenerator
from keras.layers import Dense,Input,Dropout,GlobalAveragePooling2D,Flatten,Conv2D,BatchNormalization,Activation,MaxPooling2D
from keras.models import Model,Sequential
from keras.optimizers import Adam,SGD,RMSprop
db=pd.read_csv("/content/drive/MyDrive/Colab Notebooks/fer2013.csv")
pip install np_utils
X_train = []
y_train = []
X_test = []
y_test = []
for index, row in db.iterrows():
k = row['pixels'].split(" ")
if row['Usage'] == 'Training':
X_train.append(np.array(k))
y_train.append(row['emotion'])
elif row['Usage'] == 'PublicTest':
X_test.append(np.array(k))
y_test.append(row['emotion'])
X_train = np.array(X_train,'float32')
y_train = np.array(y_train,'float32')
X_test = np.array(X_test,'float32')
y_test = np.array(y_test,'float32')
X_train = np.reshape(X_train,(X_train.shape[0], 48, 48, 1))
X_test = np.reshape(X_test,(X_test.shape[0], 48, 48, 1))
y_train= keras.utils.to_categorical(y_train, num_classes=7)
y_test = keras.utils.to_categorical(y_test, num_classes=7)
X_train-=np.mean(X_train,axis=0)
X_train /= np.std(X_train,axis=0)
X_test-=np.mean(X_test,axis=0)
X_test /= np.std(X_test,axis=0)
X_train.shape
X_test.shape
!pip install keras-tuner
def model(hp):
model=keras.Sequential([
keras.layers.Conv2D(
filters=hp.Int(
'conv1',
min_value=32,
max_value=128,
step=16
),
kernel_size=hp.Choice(
'kernel1',
values=[3,5]
),
activation='relu',
input_shape=(48,48,1)
),
keras.layers.Conv2D(
filters=hp.Int(
'conv2',
min_value=32,
max_value=128,
step=16
),
kernel_size=hp.Choice(
'kernel2',
values=[3,5]
),
activation='relu',
),
keras.layers.Conv2D(
filters=hp.Int(
'conv3',
min_value=32,
max_value=128,
step=16
),
kernel_size=hp.Choice(
'kernel3',
values=[3,5]
),
activation='relu',
),
keras.layers.Flatten(),
keras.layers.Dense(
units=hp.Int('dense_1_units', min_value=32, max_value=128, step=16),
activation='relu'
),
keras.layers.Dense(
7,
activation='softmax'
)
])
model.compile(
optimizer=keras.optimizers.Adam(hp.Choice('learning_rate', values=[1e-2, 1e-3])),
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
return model
from kerastuner import RandomSearch
from kerastuner.engine.hyperparameters import HyperParameters
tuner_search=RandomSearch(model,
objective='val_accuracy',
max_trials=5,directory='output',project_name="emotion")
tuner_search.search(X_train,X_test,epochs=3,validation_split=0.1)
ValueError:数据基数不明确:x 大小:25838 y 大小:3589 确保所有数组包含相同数量的样本。
解决方案
我只是因为一个愚蠢的错误连续撞了 10 个小时的头
错误:tuner_search.search(X_train,X_test,epochs=3,validation_split=0.1)
正确:tuner_search.search(X_train,y_train,epochs=3,validation_split=0.1)
推荐阅读
- python - Python - 归一化平均误差的编码
- angular - Angular 教程及其内存中 Web API 是否遵循正确的 PUT 语义?
- cgal - CGAL:在周期性三角剖分中使用边迭代器访问每个顶点的邻居的问题
- php - PHP - 在座位预订程序的多维关联数组中查找连续值
- sql - 更新查询 - 如何修复以避免“操作必须使用可更新查询”消息
- python - 基于 GDAL/OGR 的并行空间处理和使用 python 的空间过滤器?
- git - 永久排除某些跟踪文件
- ubuntu - avrdude 只显示没有输出,阻塞终端(Ubuntu)
- ios - 使用 UITextField 在 tableview 末尾添加行
- sql - 获取最小值及其发生的日期