Python 情感识别器训练中的错误
我正在创建一个人工智能机器来识别情绪,但是我不断得到以下错误。感谢您的帮助 Tensorflow版本:2.5 回溯(最近一次呼叫最后一次): 代码(文件2):Python 情感识别器训练中的错误,python,tensorflow,machine-learning,keras,face-recognition,Python,Tensorflow,Machine Learning,Keras,Face Recognition,我正在创建一个人工智能机器来识别情绪,但是我不断得到以下错误。感谢您的帮助 Tensorflow版本:2.5 回溯(最近一次呼叫最后一次): 代码(文件2): 注意,我使用了FER 2013数据集,并使用了2个文件来减少总时间(数据不需要每次运行代码时都更改)。您应该为model.fit()提供NumPy数组。使用np.array() trainingImages = np.array( trainingImages ) trainingEmotions= np.array( training
注意,我使用了FER 2013数据集,并使用了2个文件来减少总时间(数据不需要每次运行代码时都更改)。您应该为
model.fit()提供NumPy数组。使用np.array()
trainingImages = np.array( trainingImages )
trainingEmotions= np.array( trainingEmotions )
您应该为model.fit()
提供NumPy数组。使用np.array()!谢谢,这就是问题所在:)我添加了评论作为回答。如果它对您有帮助,请接受它,以便其他开发人员可以使用它。
# Mood Recognition AI Project
#import required libraries
import copy
import numpy as np
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
import pandas as pd
classifiedEmotions = ["Angry", "Disgust", "Fear", "Happy", "Sad", "Surprise", "Neutral"]
#load data into Python
rawData = pd.read_csv("C:/Users/HK School/OneDrive/Desktop/Face-Recognition-Dataset/test-set.csv")
#split training data and testing data
#take training data from dataset
grouped = rawData.groupby(rawData.usage)
trainingData = grouped.get_group("Training")
#take testing data from dataset
testingData = rawData.loc[rawData["usage"] != "Training"]
#split pixel values and emotions for training and testing data
#take pixel values for images & emotions from training dataset
trainingImages = trainingData[["pixels"]].values.tolist()
trainingEmotions = trainingData[["emotion"]].values.tolist()
#take pixel values for images & emotions from testing dataset
testingImages = testingData[["pixels"]].values.tolist()
testingEmotions = testingData[["emotion"]].values.tolist()
#clean up data into organized lists containing numerical values
def splitList(imageDataset):
newData = []
for i in range(len(imageDataset)):
imgRawVal = imageDataset[i]
# print(imgRawVal)
for j in range(len(imgRawVal)):
imgSplitVal = imgRawVal[j].split(" ")
newData.append(imgSplitVal)
pixeledImage = np.array(newData, 'float64')/255
for k in range(len(newData)):
imageIn2D = pixeledImage[k].reshape(48,48)
newData[k] = imageIn2D
return newData
testingImages = splitList(testingImages)
trainingImages = splitList(trainingImages)
def convertToImages(imagesDataset):
for i in range(len(imagesDataset)):
plt.imshow(imagesDataset[i], cmap= "gray", interpolation="nearest")
plt.axis("off")
plt.show()
convertToImages(testingImages)
convertToImages(trainingImages)
def splitLabels(emotionDataset):
newList = []
for i in range(len(emotionDataset)):
newList.append(emotionDataset[i][0])
return newList
trainingEmotions = splitLabels(trainingEmotions)
testingEmotions = splitLabels(testingEmotions)
def classifyEmotions(emotionDataset):
for i in range(len(emotionDataset)):
emotionDataset[i] = classifiedEmotions[emotionDataset[i]]
return emotionDataset
classifiedTrainingEmotions = classifyEmotions(trainingEmotions)
# print(classifiedTrainingEmotions)
# print(testingEmotions)
print(testingImages)
import pickle
f = open("data.pickle", "wb")
pickle.dump({"testingImages": testingImages, "trainingImages": trainingImages,"testingEmotions": testingEmotions, "trainingEmotions": trainingEmotions}, f)
f.close()
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import pickle
file = open("data.pickle", "rb")
completeValues = pickle.load(file)
file.close()
# print(completeValues)
testingImages = completeValues['testingImages']
trainingImages = completeValues['trainingImages']
trainingEmotions = completeValues['trainingEmotions']
testingEmotions = completeValues['testingEmotions']
classifiedEmotions = ["Angry", "Disgust", "Fear", "Happy", "Sad", "Surprise", "Neutral"]
def classifyEmotions(emotionDataset):
for i in range(len(emotionDataset)):
emotionDataset[i] = classifiedEmotions[emotionDataset[i]]
return emotionDataset
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(48, 48)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(7)
])
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
model.fit(trainingImages, trainingEmotions, epochs=10)
trainingImages = np.array( trainingImages )
trainingEmotions= np.array( trainingEmotions )