在阅读张量流分段时,我试图弄清楚以下实现的目标是什么?
x
张量定义如下self.x = tf.placeholder("float", shape=[None, None, None, n_label])
。
稍后,一个函数尝试调用转换的张量“x1”,定义为x1=tf.reshape(self.x, [-1, n_label])
我的理解是tf.reshape(self.x, [-1,n_label])
应该尝试重塑
x张量为1-D向量。
但是我有点混淆x这样定义的shape=[None, None, None, n_label]
和x1这样转换。 x1应该是什么样子以及为什么要这样做?
答案 0 :(得分:1)
(ROOT ['S'])(S ['NP', 'VP'])(NP ['Papa'])(S ['NP', 'VP'])(VP ['V', 'NP'])(V ['ate'])(VP ['V', 'NP'])(NP ['Det', 'N'])(Det ['the'])(NP ['Det', 'N'])(N ['caviar'])(ROOT ['S'])
表示我们不想在创建图形时指定尺寸,而是希望在运行时确定它。例如,当您想在火车和推理期间使用不同的小批量大小时,它可能很有用。
对于某些维度重塑None
意味着“保留张量的总大小”。例如,对于形状[3,4,2]的x,重塑。(x,[ - 1,2])将产生新的形状张量[12,2]。