TensorFlow KMeans类解包报错:值过多无法解包问题咨询
我之前也踩过这个坑!确实TensorFlow的tf.contrib.factorization.KMeans模块文档没跟上实际实现,training_graph()的返回值比官方文档描述的要多一个额外的张量,这就是你碰到"Too many values to unpack"错误的原因。
实际完整返回值列表
官方旧文档可能只列出了6个返回值,但实际调用training_graph()会返回7个元素,完整的返回项如下:
centers: 形状为[num_clusters, dim]的张量,存储最终的聚类中心cluster_idx: 形状为[batch_size]的张量,每个输入样本对应的聚类索引scores: 形状为[batch_size]的张量,每个样本到其所属聚类中心的距离cluster_centers_initialized: 标量张量,用来标记聚类中心是否已经完成初始化init_op: 用于初始化聚类中心的操作节点train_op: 执行一轮K-Means训练迭代的操作节点sum_squared_error: 标量张量,所有样本到对应聚类中心的平方误差总和(这就是文档遗漏的那个额外返回值)
正确的解包示例
你需要把这个额外的返回值也加入解包语句中,比如:
# 假设你已经创建了KMeans实例kmeans centers, cluster_idx, scores, cluster_centers_initialized, init_op, train_op, sum_squared_error = kmeans.training_graph()
小提示:因为tf.contrib下的模块都是实验性组件,文档更新往往滞后于代码实现,下次碰到类似问题可以直接查看函数的源码注释,那里的信息会比在线文档更准确。
内容的提问来源于stack exchange,提问作者Jerry Ajay
相关产品推荐
相关产品推荐

