python - weight_column 值归一化
问题描述
我使用 TensorFlow 罐装估计器从最有利于得分的情况中预测游戏动作(没有“好”或“坏”答案,但根据情况,答案比另一个更好)。这种现实由每个情况/动作样本的分数表示。分数包含在 train_data 中并用作权重,并在估计器中作为权重列传递。
1 ) 我试过没有权重栏:模型适合大约 70% 的答案。该模型对于主要示例是正确的,但对于边缘示例不是最佳的(大约 20 % 剩余......)
2 ) 我尝试使用 weight = exp(-score)。模型拟合约 45%,更好地处理边缘示例,但对主要示例的准确性非常差。
我认为我的体重秤 [0.0001 - 5003.98] 存在问题,最佳结果为 0.0001,价值为 5003.98。规范化它的好方法是什么?
我读了公式 weight = (score - mean(score)) / std(score) 可能是一个解决方案,但似乎不起作用
model = tf.estimator.LinearClassifier(feature_columns=feature_columns,
optimizer=tf.train.AdamOptimizer(learning_rate=0.001, beta1= 0.9,beta2=0.99, epsilon = 1e-08,use_locking=False),
weight_column=weights,
n_classes=10,
label_vocabulary=Action_vocab,
model_dir='./Models/ActionPlayerModel20/',
loss_reduction=tf.losses.Reduction.SUM_OVER_BATCH_SIZE,
config=tf.estimator.RunConfig().replace(save_summary_steps=10))
weight = exp(-score)
解决方案
通过这样做(缩放)解决了重量问题:
scaledWeight = (weight-weightMin)/(weightMax-weightMin)
它没有完全解决我的问题(更好但不是最佳精度)。所以,我尝试了特征归一化和标准化:归一化准确率高,但过拟合很快;非常好的准确性和缓慢的标准化过拟合。
标准化代码:
tf.feature_column.numeric_column("Round",dtype=tf.dtypes.float32, normalizer_fn=lambda x: (x - roundMean) / roundStd),
推荐阅读
- jira - 当我离开组织时,我在个人空间中创建的 Confluence 内容会被删除吗?
- webots - 尝试将 ImageTexture 添加到 IndexedFaceSet 的形状中,如何控制 ImageTexture 的外观?
- file - 随机文件顺序
- bash - 双参数替换以获取变量值
- git - 如何在 GitHub 流程中合并和标记先前版本的错误修复
- unity3d - 如何将unity项目上传到github
- python - 所有未见数据的概率值均小于 0.5
- c - 通过指针从 kd 树递归打印节点
- solr - 是否可以为 Solr 8 的每个集合使用“ClassicIndexSchemaFactory”的 schema.xml?
- java - “内部错误:准备张量分配时意外失败” - Firebase MLKIT - Android - 本地模型加载失败