何时应使用tf.contrib.slim以及何时应使用tf.layers?
答案 0 :(得分:2)
根据https://www.tensorflow.org/api_docs/python/tf/contrib中的定义,contrib模块包含“易失性代码或实验代码”。
通常来说,模块SELECT qm1.date,
qm1.invoiceno,
CASE
WHEN qi2.quoteid IS NULL
THEN cm1.currencycode
ELSE
'0'
END currencycode,
CASE
WHEN qi2.quoteid IS NULL
THEN qi2.amount
ELSE
0
END amount
FROM quotationmaster qm1
LEFT JOIN (SELECT qi1.quoteid,
sum(qi1.amount) amount,
max(qi1.currencyid) currencyid
FROM quoteitems qi1
GROUP BY qi1.quoteid
HAVING max(qi1.currencyid) = min(qi1.currencyid)) qi2
ON qi2.quoteid = qm1.quoteid
LEFT JOIN currencymaster cm1
ON cm1.currencyid = cm1.qurrencyid;
包含贡献的代码。该代码通常需要进行一些其他测试,并且在最终集成到TensorFlow内核之前可能会遇到一些重大更改。特别是,此代码不受Tensorflow团队的支持,并且可能随时在没有保证的情况下进行修改或完全删除。
由于这个原因,总的来说我更喜欢使用tf.contrib
,因为它在代码支持方面更加稳定,但是显然tf.layers
中的某些实现有时还是有用的(例如,当有新的实现时)层,优化器等。您不能或不想自己编写它们,有时这些库会快速更新)。