1)这里是对属性/类别求误差。
attributes_w_n = tf.to_float(attribute_batch[:, 1:6])print('attributes_w_n=',attributes_w_n.get_shape()) #?要运行时才知道,奇怪的设定# attributes_w_n[75000,5]mat_ratio = tf.reduce_mean(attributes_w_n,axis=0)# mat_ratio[5],对第一维求均值mat_ratio = tf.map_fn(lambda x:(tf.cond(x > 0,lambda: 1/x,lambda:float(args.batch_size))),mat_ratio)# >0,则为1/x; 否则为args.batch_size。attributes_w_n = tf.convert_to_tensor(attributes_w_n * mat_ratio)#所有数据乘以均值?,tf.multiply()两个矩阵中对应元素各自相乘。attributes_w_n前后的维度不变attributes_w_n = tf.reduce_sum(attributes_w_n,axis=1)
假设attributes_w_n = tf.to_float(attribute_batch[:, 1:6])之后为attributes_w_n [M,5]
mat_ratio = tf.reduce_mean(attributes_w_n,axis=0)表示:
tmp[1:5]=0
for i in range(M):tmp[:]=tmp[:]+attributes_w_n[i,:]
mat_ratio = tmp/M求M个的均值。