Python 具有数据集和附加预定义约束的Tensorflow模型训练

Python 具有数据集和附加预定义约束的Tensorflow模型训练,python,tensorflow,Python,Tensorflow,我试图理解如何创建一个tensorflow模型,它不是一个分类,而是一次执行多项目分类 例如,我希望我的tensorflow模型根据某些天气条件返回一套衣服。输出应包括一套不会重复其类型的衣服(当出现明显问题时,如何纠正模型-当其他布料类型较轻时,不应选择冬季夹克): 到目前为止,我只能对单一类型的服装进行分类,即: 夏季帽子-95% 冬季帽子-5% 总结一下我的问题:是否可以使用tensorflow创建这样的模型,该模型可以输出一组可能的服装变化,而无需重复的布料类型,如果可以,如何训练该模型

我试图理解如何创建一个tensorflow模型,它不是一个分类,而是一次执行多项目分类

例如,我希望我的tensorflow模型根据某些天气条件返回一套衣服。输出应包括一套不会重复其类型的衣服(当出现明显问题时,如何纠正模型-当其他布料类型较轻时,不应选择冬季夹克):

到目前为止,我只能对单一类型的服装进行分类,即: 夏季帽子-95% 冬季帽子-5%


总结一下我的问题:是否可以使用tensorflow创建这样的模型,该模型可以输出一组可能的服装变化,而无需重复的布料类型,如果可以,如何训练该模型?

您尝试的是什么

基本多标签分类 模型 基本上,您的最后一层应该输出
N
值,其中
N
是您拥有的衣服数量。示例模型在
tf2.0
中可能如下所示:

import tensorflow as tf

WEATHER_CONDITIONS = 15  # Based on 15 weather conditions
CLOTHES = 25  # Predict 25 possible clothes

model = tf.keras.models.Sequential(
    [
        tf.keras.layers.Dense(64, input_shape=(WEATHER_CONDITIONS,)),
        tf.keras.layers.Dense(128, activation="relu"),
        tf.keras.layers.Dropout(0.5),
        tf.keras.layers.Dense(256, activation="relu"),
        tf.keras.layers.Dense(CLOTHES),
    ]
)
目标 您的目标应该是二进制向量,其中每个位置对应于衣服的某个预定义部分,例如,
[0,1,0,1,0,1]
对应的
[帽子、衬衫、夹克、凉鞋、普通裤子、轻裤子]
意味着
衬衫
凉鞋
轻裤子
已被预测

损失函数 鉴于上述情况,您应该使用with
from_logits=True
或作为损失函数,以便每个向量值都在
[0,1]
范围内(最好是第一个)

纠正明显的问题 最简单的方法是将目标分成多个组

例如:

[summer hat, light shirt, light pants, sandals, light shoes]

[winter hat, shirt, pants, boots, shoes]
现在,您的模型应该输出两个目标:
0
1
(无论是
轻的
还是
重的
衣服)和具有与特定项目对应的
5
元素的二进制向量。这将需要两次损失,并根据预测值选择特定组

如果选择了错误的组,您可以指定最大惩罚,并编写自己的自定义损失函数。您可以在StackOverflow上查看如何执行此操作或其他操作

[summer hat, light shirt, light pants, sandals, light shoes]

[winter hat, shirt, pants, boots, shoes]