【发布时间】:2021-09-10 02:18:37
【问题描述】:
我正在尝试在 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 尺码:3589 确保所有数组都包含相同数量的样本。
【问题讨论】:
标签: python numpy tensorflow keras conv-neural-network