【问题标题】:Trying different input combinations for a tensorflow model为张量流模型尝试不同的输入组合
【发布时间】:2021-03-21 13:41:53
【问题描述】:

我在 Tensorflow 中构建了一个神经网络,并且正在使用情感维度来尝试构建一个预测模型。几个维度是愤怒、悲伤、喜悦、惊喜、积极、消极等。我的目标是尝试组合不同的维度,看看是否可以找到它们之间的非线性关系(我使用的是自组织模糊神经网络)与我试图预测的内容。 (例如'Anger Surpise'、'Anger、Sad'、'Sad、Joy、Surprise'等)

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

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

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

【问题讨论】:

    标签: python pandas tensorflow


    【解决方案1】:

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

    首先 - 我建议为这种类型的操作构建数据结构 - 并对 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2022-01-08
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多