1.从tensor里截取特定的行:
比如有temp_var = tf.Variable([[1,2,3], [4,5,6], [7,8,9], [10,11,12]])
想要取出来的行为idx = tf.constant([0,2])
那么相应的操作为:rows = tf.gather(temp_var, idx)
gather_nd 比gather还要更强势
2.tf.nn.top_k()
def top_k(input, k=1, sorted=True, name=None)
查找最后一个维度的前k
个最大条目的值和索引。
注:该函数返回的数据包含两部分,第一部分是返回的value值,第二部分返回的是对应的索引值。可以通过索引[0]或者[1]进行访问。
3.命名习惯
养成在tf.xx()里面加上 name = xx的习惯!
4.恩...expand_dim 在干嘛
t0=tf.constant([[0,0],[1,1]])
t1 = tf.expand_dims(t0, axis=-1)
t=tf.constant([[[0],[0]],[[1],[1]]])
5. 程序的话最好还是尽量避免for循环 学会逼自己用tensor matrix进行矩阵之间的计算
这样的话更新啥的还是比较方便 分成小的再凑起来总会是有问题的
6. tf.concat 和tf.stack 用作将一组tensor合并(已有dimension vs 新增dimension) 和reduce_mean可能配合使用
7. 乘以不同阶数的矩阵tensor 记得reshape 然后再相乘
8. tf.nn.embedding_lookup_sparse 和 tf.sparse.matmul(sparse_tensor_dense_matmul)之间的瓜葛