博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TensorFlow 报错:unhashable type: 'numpy.ndarray' error
阅读量:3747 次
发布时间:2019-05-22

本文共 1009 字,大约阅读时间需要 3 分钟。

在TensorFlow运行计算图的过程中,sess.run()那行可能会出现报错 unhashable type: 'numpy.ndarray' error 大致意思为不可哈希的类型 问题出现在feed_dict 里面。、

解决方法 1:

  在启动sess并给placeholeder喂数据后报错:TypeError: unhashable type: 'numpy.ndarray'。 这是由于变量名与占位符名冲突导致的,看到莫名其妙的TypeError要考虑是否存在变量名重复。 

解决方法2:

我们知道,feed_dict 参数一般存放占位符placeholder 所指向的具体的数据,以字典方式存储。而Python中字典的key和value类型是有限制的,并不是所有类型都能充当字典中的key和value。 所以此处的问题就是在存储在feed_dict中的键或值出了问题,一般key设置为placeholder ,新手在使用的时候可能会在key上面出现问题,注意排查一下就好。

但是除了以上说的那个问题以外,其他有可能出现的情况是placeholder 和真实数据的类型不一样,比如placeholder 为tf.int32,而真实数据为np.int64 ,这里需要将所对应的类型设为一致。不一致有可能会导致以上问题。参考链接: https://stackoverflow.com/questions/43081403/unhashable-type-numpy-ndarray-error-in-tensorflow ps:

顺带简要复习一下Python字典的特点

1.健必须是可散列的,即不可变 用户自己实现的对象默认都是可散列的,因为id()不同。一个可散列对象应该有以下属性: 支持hash()函数,通过hash()方法得到的散列值是不变的。 Python的基本类型如字符串、整数、浮点数还有元组都是不可变的,都可以作为 key(list类型不可以)。

2.字典内存开销大,但访问速度快 因为字典是由散列表实现的,散列表中肯定对出现一些稀疏,这就导致了字典会占用一些空间。当然和字典的速度相比这点内存是可以忽略的。 3.字典的健顺序不是唯一的 由于散列表在插入或者读取时候可能会产生散列冲突,这就导致了字典中健的顺序不是唯一的,但是不管字典健的顺序怎么变,如果两个字典健值对都一样那么这两个字典都是相等的 

 

转载地址:http://vvusn.baihongyu.com/

你可能感兴趣的文章
python_json模块和pickle模块
查看>>
python_configparser模块、hashlib模块和subprocess模块
查看>>
项目:ATM+购物车(超级详解,已完结)
查看>>
一、算法基础+递归算法+查找算法
查看>>
走进算法工程师(算法工程师开发修炼之路)
查看>>
我与2021有个约
查看>>
100多个免费API接口分享 调用完全不限次数,以后总用得着
查看>>
leetcode每日一题【509. 斐波那契数】
查看>>
leetcode每日一题【830. 较大分组的位置】
查看>>
图灵测试过时了?
查看>>
leetcode每日一题【399. 除法求值】==》并查集&模板
查看>>
二、数据结构基础+栈+队列+迷宫问题
查看>>
python_多态
查看>>
项目:python3实现选课系统(超级详解,已完结)
查看>>
方法论:面向对象的软件工程
查看>>
python_面向对象高级——元类
查看>>
python_网络编程初探(cs架构+TCP协议)
查看>>
数据分析之Numpy
查看>>
第一门课 神经网络和深度学习(Neural Networks and Deep Learning)
查看>>
python_并发编程初探(进程篇)
查看>>