如果您对TypeError:不可散列的类型:'numpy.ndarray'在将元组转换为set和元组属于不可变序列类型感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解TypeError:不可散列
如果您对TypeError:不可散列的类型:'numpy.ndarray'在将元组转换为set和元组属于不可变序列类型感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解TypeError:不可散列的类型:'numpy.ndarray'在将元组转换为set的各种细节,并对元组属于不可变序列类型进行深入的分析,此外还有关于"ValueError: Failed to convert a NumPy array to an Tensor (Unsupported object type numpy.ndarray). 在 TensorFlow CNN 中进行图像分类、'<=' 在 'numpy.ndarray' 和 'numpy.ndarray' 的实例之间不受支持但 LHS 是 pd.Timestamp、'numpy.ndarray' 对象在 map 函数中不可调用,使用 numpy 数组、Jupyter 中的 Numpy 在打印时出错(Python 版本 3.8.8):TypeError: 'numpy.ndarray' object is not callable的实用技巧。
本文目录一览:- TypeError:不可散列的类型:'numpy.ndarray'在将元组转换为set(元组属于不可变序列类型)
- "ValueError: Failed to convert a NumPy array to an Tensor (Unsupported object type numpy.ndarray). 在 TensorFlow CNN 中进行图像分类
- '<=' 在 'numpy.ndarray' 和 'numpy.ndarray' 的实例之间不受支持但 LHS 是 pd.Timestamp
- 'numpy.ndarray' 对象在 map 函数中不可调用,使用 numpy 数组
- Jupyter 中的 Numpy 在打印时出错(Python 版本 3.8.8):TypeError: 'numpy.ndarray' object is not callable
TypeError:不可散列的类型:'numpy.ndarray'在将元组转换为set(元组属于不可变序列类型)
如何解决TypeError:不可散列的类型:''numpy.ndarray''在将元组转换为set
data_xy = tuple([x,y])
x和y是具有大小的numpy数组: x.shape =(56567,128,16)和 y.shape =(56567,1)
TypeError发生在以下行:
for data_class in sorted(set(data_xy[1])):
TypeError:不可散列的类型:''numpy.ndarray''
解决方法
您不能对numpy数组进行哈希处理,因为它是可变的。集合是哈希表,要求其所有元素都是可哈希的。
由于无法将np.unique
应用于数组的行,因此建议改用s = np.unique(data_xy[1],axis=0)
s.sort()
for data_class in s:
:
for
通常,您应该努力解决numpy数组上的set
循环问题,因为这通常是不必要的,并且会降低速度。
另一种解决方案是为行创建可散列的包装器类型,以便可以在class RowView:
def __init__(self,row):
self.hash = hash(tuple(row))
self.data = row
def __hash__(self):
return self.hash
def __lt__(self,other):
return np.argmax(np.less(self.data,other.data)) < np.argmax(np.less(other.data,self.data))
for data_class in (x.data for x in sorted(set(RowView(r) for r in data_xy[1]))):
中使用它们。这将非常缓慢,不建议使用,但可以说明这个概念:
np.ndarray
一种稍微快一点的解决方案,可以更好地展示自定义哈希,是使用自定义哈希扩展class HashableArray(np.ndarray):
def __hash__(self):
return hash(tuple(self))
def __lt__(self,other):
return np.argmax(np.less(self,other)) < np.argmax(np.less(other,self))
for data_class in sorted(set(x.view(HashableArray) for x in data_xy[1]))):
。然后,您可以直接使用视图对象,而无需前后复制数据:
getStringList("...") was called on null
"ValueError: Failed to convert a NumPy array to an Tensor (Unsupported object type numpy.ndarray). 在 TensorFlow CNN 中进行图像分类
如何解决"ValueError: Failed to convert a NumPy array to an Tensor (Unsupported object type numpy.ndarray). 在 TensorFlow CNN 中进行图像分类
我一直在研究用于图像分类的 CNN,但我一直遇到同样的错误,我的数据正在加载到数据帧中,但我无法将其转换为张量以将其输入 CNN。如您所见,我使用此代码将图片加载到数据框中:
for i in range(len(merged)):
full_path = merged.iloc[i][''Image Path Rel'']
filename = full_path[-22:-1] + ''G''
try:
img = img_to_array(load_img(''D:/Serengeti_Data/Compressed/Compressed/'' + filename,target_size=(32,32,3)))
except:
img = np.zeros((32,3),dtype=np.float32)
images = images.append({''Capture Id'' : merged.iloc[i][''Capture Id''],''Image'' : img},ignore_index = True)
else:
images = images.append({''Capture Id'' : merged.iloc[i][''Capture Id''],ignore_index = True)
然后,一旦我使用 load_img()
和 img_to_array()
加载了图像,我进行了重塑以获得所需的 (32,3) 形状。还通过将 Image 列除以 255 来标准化这些值。
然后我这样做是为了尝试将其转换为张量:
train_tf = tf.data.Dataset.from_tensor_slices(images[''Image''])
# Also tried this,but didn''t got the same results:
# train_tf = tf.convert_to_tensor(train_df[''Image''])
但不断收到错误:
ValueError: 无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)
我也尝试跳过它并立即尝试适应我们的模型,但得到了完全相同的错误:
trying_df = pd.DataFrame(images[''Image''])
target_df = pd.DataFrame(targets)
animal_model = models.Sequential()
animal_model.add(layers.Conv2D(30,kernel_size = (3,padding = ''valid'',activation = ''relu'',input_shape =(32,3)))
animal_model.add(layers.MaxPooling2D(pool_size=(1,1)))
animal_model.add(layers.Conv2D(60,kernel_size=(1,1),activation = ''relu''))
animal_model.add(layers.Flatten())
animal_model.add(layers.Dense(100,activation = ''relu''))
animal_model.add(layers.Dense(10,activation = ''softmax''))
## compiler to model
animal_model.compile(loss = ''categorical_crossentropy'',metrics = [''accuracy''],optimizer =''adam'')
## training the model
animal_model.fit(trying_df,target_df,batch_size = 128,epochs = 15)
animal_model.summary()
TensorFlow 版本:2.4.1
Numpy 版本:1.19.5
熊猫版本:1.0.1
解决方法
为了加载图像,您可以使用以下代码:
image = cv2.imread(filename)
image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
为了调整图像的大小和缩放比例,最好让模型“嵌入”预处理功能。
IMG_SIZE = 180
resize_and_rescale = tf.keras.Sequential([
layers.experimental.preprocessing.Resizing(IMG_SIZE,IMG_SIZE),layers.experimental.preprocessing.Rescaling(1./255)
])
model = tf.keras.Sequential(
[
resize_and_rescale,layers.Conv2D(32,3,activation="relu"),layers.MaxPooling2D(),layers.Conv2D(64,layers.Conv2D(128,layers.Flatten(),layers.Dense(128,layers.Dense(len(class_names),activation="softmax"),]
)
model.compile(
optimizer="adam",loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=["accuracy"],)
注意:
处理图像时使用 tf.Data
而不是 numpy 数组。您可以使用以下代码作为示例:
https://github.com/alessiosavi/tensorflow-face-recognition/blob/90d4acbea8f79539826b50c82a63a7c151441a1a/dense_embedding.py#L155
'<=' 在 'numpy.ndarray' 和 'numpy.ndarray' 的实例之间不受支持但 LHS 是 pd.Timestamp
如何解决''<='' 在 ''numpy.ndarray'' 和 ''numpy.ndarray'' 的实例之间不受支持但 LHS 是 pd.Timestamp
代码:
print(min_time.__class__,min_time,times.__class__)
print(max_time.__class__,max_time)
mask = (times >= min_time) * (times <= max_time)
产量:
''
什么给? LHS 显然是 pandas.Timestamp
,RHS 显然是 numpy.ndarray
。我的类型发生了什么神奇的事情吗?
'numpy.ndarray' 对象在 map 函数中不可调用,使用 numpy 数组
如何解决''numpy.ndarray'' 对象在 map 函数中不可调用,使用 numpy 数组
我的目标是规范化二维 numpy 数组/矩阵的每一行。我以为会很简单.. 我正在尝试执行如下代码所示的地图操作。我查找了这个错误,它在像函数一样调用数组时发生,这不是我的情况..
输入参数(p_list)是一个二维的numpy数组:
import numpy as np
def normalize(p_list):
if (type(p_list) == list):
L = p_list
else:
L = p_list.tolist() # Converts numpy matrix to list of lists.
print(type(L)) # L is of type list ! (even if p_list is of type numpy.ndarray)
return list(map(lambda p: np.linalg.norm(p),L))
我的错误,发生在 list(map(...)) 行。 :
TypeError: ''numpy.ndarray'' object is not callable
对不起我的误解,如果这个问题已经解决了.. :/
Jupyter 中的 Numpy 在打印时出错(Python 版本 3.8.8):TypeError: 'numpy.ndarray' object is not callable
如何解决Jupyter 中的 Numpy 在打印时出错(Python 版本 3.8.8):TypeError: ''numpy.ndarray'' object is not callable?
晚安, 尝试打印以下内容时,我在 jupyter 中遇到了 numpy 问题,并且得到了一个 错误: 需要注意的是python版本是3.8.8。 我先用 spyder 测试它,它运行正确,它给了我预期的结果
使用 Spyder:
import numpy as np
for i in range (5):
n = np.random.rand ()
print (n)
Results
0.6604903457995978
0.8236300859753154
0.16067650689842816
0.6967868357083673
0.4231597934445466
现在有了 jupyter
import numpy as np
for i in range (5):
n = np.random.rand ()
print (n)
-------------------------------------------------- ------
TypeError Traceback (most recent call last)
<ipython-input-78-0c6a801b3ea9> in <module>
2 for i in range (5):
3 n = np.random.rand ()
----> 4 print (n)
TypeError: ''numpy.ndarray'' object is not callable
感谢您对我如何在 Jupyter 中解决此问题的帮助。
非常感谢您抽出宝贵时间。
阿特,约翰”
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
今天关于TypeError:不可散列的类型:'numpy.ndarray'在将元组转换为set和元组属于不可变序列类型的分享就到这里,希望大家有所收获,若想了解更多关于"ValueError: Failed to convert a NumPy array to an Tensor (Unsupported object type numpy.ndarray). 在 TensorFlow CNN 中进行图像分类、'<=' 在 'numpy.ndarray' 和 'numpy.ndarray' 的实例之间不受支持但 LHS 是 pd.Timestamp、'numpy.ndarray' 对象在 map 函数中不可调用,使用 numpy 数组、Jupyter 中的 Numpy 在打印时出错(Python 版本 3.8.8):TypeError: 'numpy.ndarray' object is not callable等相关知识,可以在本站进行查询。
本文标签: