Python 具有数据集和附加预定义约束的Tensorflow模型训练
我试图理解如何创建一个tensorflow模型,它不是一个分类,而是一次执行多项目分类 例如,我希望我的tensorflow模型根据某些天气条件返回一套衣服。输出应包括一套不会重复其类型的衣服(当出现明显问题时,如何纠正模型-当其他布料类型较轻时,不应选择冬季夹克): 到目前为止,我只能对单一类型的服装进行分类,即: 夏季帽子-95% 冬季帽子-5%Python 具有数据集和附加预定义约束的Tensorflow模型训练,python,tensorflow,Python,Tensorflow,我试图理解如何创建一个tensorflow模型,它不是一个分类,而是一次执行多项目分类 例如,我希望我的tensorflow模型根据某些天气条件返回一套衣服。输出应包括一套不会重复其类型的衣服(当出现明显问题时,如何纠正模型-当其他布料类型较轻时,不应选择冬季夹克): 到目前为止,我只能对单一类型的服装进行分类,即: 夏季帽子-95% 冬季帽子-5% 总结一下我的问题:是否可以使用tensorflow创建这样的模型,该模型可以输出一组可能的服装变化,而无需重复的布料类型,如果可以,如何训练该模型
总结一下我的问题:是否可以使用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]
对应的[帽子、衬衫、夹克、凉鞋、普通裤子、轻裤子]
意味着衬衫
,凉鞋
和轻裤子
已被预测
损失函数
鉴于上述情况,您应该使用withfrom_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]