Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 情感识别器训练中的错误_Python_Tensorflow_Machine Learning_Keras_Face Recognition - Fatal编程技术网

Python 情感识别器训练中的错误

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

我正在创建一个人工智能机器来识别情绪,但是我不断得到以下错误。感谢您的帮助

Tensorflow版本:2.5

回溯(最近一次呼叫最后一次):

代码(文件2):


注意,我使用了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 )