为张量流模型尝试不同的输入组合

时间:2021-03-21 13:41:53

标签: python pandas tensorflow

我有一个在 Tensorflow 中构建的神经网络,并且正在使用情感维度来尝试构建一个预测模型。几个维度是愤怒、悲伤、喜悦、惊喜、积极、消极等。模糊神经网络)与我试图预测的内容。 (例如“愤怒惊喜”、“愤怒、悲伤”、“悲伤、喜悦、惊喜”等)

我尝试过的: 我使用“itertools”库获得了所有不同的组合。然后我创建了一个函数,它接收我想尝试的列,然后将我的 Pandas 数据帧拆分为训练和测试,训练模型,并返回输出。

我曾尝试在一个包含组合的列的 Pandas 数据帧上使用 .map 调用此函数,我也尝试使用线程池,并且还尝试对组合列表进行简单循环并调用我的函数,但是花费的时间呈指数级变慢,我认为这与垃圾收集器没有完成其工作有关(我的 RAM 使用率也变得非常高)。然后,我尝试在每次函数调用后删除所有训练、测试数据帧和模型,但没有帮助。

tl;dr 有没有一种好方法可以在 tensorflow 模型上尝试不同的输入组合?

1 个答案:

答案 0 :(得分:0)

您的问题似乎很复杂 - 需要确定的因素很多。

首先 - 我建议为这种类型的操作构建数据结构 - 并在 github 上的现有代码库中进行一些研究。

用于严格操作图像和人脸识别 - cv2openCV。 这种类型的模型基本上适用于基于此的人脸识别和 (x,y) 中点的位置和欧几里德距离。

在声明和调整层的过程中 - 有可能混合这些层 - (Conv64、池化、Conv128、Conv258、Conv512) 例如。

model = Sequential()

model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(48,48,1)))
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(1024, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(7, activation='softmax'))

(参考:https://github.com/atulapra/Emotion-detection/blob/master/src/emotions.py

并定义前面提到的因素,例如。

(0=愤怒,1=厌恶,2=恐惧,3=快乐,4=悲伤,5=惊讶,6=中立)

所以在对情绪进行分类之后:

需要读取点的位置 - 逐点,例如:

for(x, y, w, h) in images
相关问题