我一直在阅读文档以学习TensorFlow,并一直在努力何时使用以下功能及其目的。
tf.split()
tf.reshape()
tf.transpose()
到目前为止,我的猜测是:
使用tf.split()因为输入必须是序列。
tf.reshape()用于使形状兼容(不正确的形状往往是我常见的问题/错误)。之前我用过numpy。我现在可能会坚持使用tf.reshape()。我不确定两者之间是否存在差异。
tf.transpose()根据我的理解交换行和列。如果我不使用tf.transpose(),我的损失不会下降。如果参数值不正确,则损失不会减少。所以我使用tf.transpose()的目的是让我的损失下降,我的预测变得更准确。
这让我非常困扰,因为我正在使用tf.transpose(),因为我必须并且不理解为什么它是如此重要的因素。我假设如果没有正确使用输入和标签可能处于错误的位置。使模型无法学习。如果这是真的,我怎么能去使用tf.transpose(),这样我就不会依赖于通过反复试验找出参数值?
答案 0 :(得分:2)
为什么我需要 tf.transpose()?我无法想象为什么你需要它,除非你从头开始编码你的解决方案需要它。例如,假设我有120个学生记录,每个学生有50个统计数据,我想用它来尝试与他们获得3个课程的机会进行线性关联。我是这样说的
c = r x m
r =记录,如果[120x50]则为具有形状的矩阵 m =感应矩阵。它的形状为[50x3] c =所有学生参加三门课程之一的机会,一个形状为[120x3]的矩阵
现在,如果不是制作m [50x3],我们会愚弄并制作m [3x50],那么我们必须在乘法之前转置它。
有时您只需要交换行和列,如上所述。 Wikipedia有一个很棒的页面。转置函数具有一些优秀的矩阵数学函数属性,如关联函数和关联函数的关联性。
我不认为我曾在任何 CNN 中使用 tf.transpose 。