GVKun编程网logo

TypeError:不可散列的类型:'numpy.ndarray'在将元组转换为set(元组属于不可变序列类型)

3

如果您对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(元组属于不可变序列类型)

TypeError:不可散列的类型:'numpy.ndarray'在将元组转换为set(元组属于不可变序列类型)

如何解决TypeError:不可散列的类型:''numpy.ndarray''在将元组转换为set

  1. data_xy = tuple([x,y])

x和y是具有大小的numpy数组: x.shape =(56567,128,16)和 y.shape =(56567,1)

TypeError发生在以下行:

  1. 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:

  1. 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]))): 中使用它们。这将非常缓慢,不建议使用,但可以说明这个概念:

  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]))): 。然后,您可以直接使用视图对象,而无需前后复制数据:

  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。如您所见,我使用此代码将图片加载到数据框中:

  1. for i in range(len(merged)):
  2. full_path = merged.iloc[i][''Image Path Rel'']
  3. filename = full_path[-22:-1] + ''G''
  4. try:
  5. img = img_to_array(load_img(''D:/Serengeti_Data/Compressed/Compressed/'' + filename,target_size=(32,32,3)))
  6. except:
  7. img = np.zeros((32,3),dtype=np.float32)
  8. images = images.append({''Capture Id'' : merged.iloc[i][''Capture Id''],''Image'' : img},ignore_index = True)
  9. else:
  10. images = images.append({''Capture Id'' : merged.iloc[i][''Capture Id''],ignore_index = True)

然后,一旦我使用 load_img()img_to_array() 加载了图像,我进行了重塑以获得所需的 (32,3) 形状。还通过将 Image 列除以 255 来标准化这些值。

然后我这样做是为了尝试将其转换为张量:

  1. train_tf = tf.data.Dataset.from_tensor_slices(images[''Image''])
  2. # Also tried this,but didn''t got the same results:
  3. # train_tf = tf.convert_to_tensor(train_df[''Image''])

但不断收到错误:

ValueError: 无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)

我也尝试跳过它并立即尝试适应我们的模型,但得到了完全相同的错误:

  1. trying_df = pd.DataFrame(images[''Image''])
  2. target_df = pd.DataFrame(targets)
  3. animal_model = models.Sequential()
  4. animal_model.add(layers.Conv2D(30,kernel_size = (3,padding = ''valid'',activation = ''relu'',input_shape =(32,3)))
  5. animal_model.add(layers.MaxPooling2D(pool_size=(1,1)))
  6. animal_model.add(layers.Conv2D(60,kernel_size=(1,1),activation = ''relu''))
  7. animal_model.add(layers.Flatten())
  8. animal_model.add(layers.Dense(100,activation = ''relu''))
  9. animal_model.add(layers.Dense(10,activation = ''softmax''))
  10. ## compiler to model
  11. animal_model.compile(loss = ''categorical_crossentropy'',metrics = [''accuracy''],optimizer =''adam'')
  12. ## training the model
  13. animal_model.fit(trying_df,target_df,batch_size = 128,epochs = 15)
  14. animal_model.summary()

TensorFlow 版本:2.4.1

Numpy 版本:1.19.5

熊猫版本:1.0.1

解决方法

为了加载图像,您可以使用以下代码:

  1. image = cv2.imread(filename)
  2. image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)

为了调整图像的大小和缩放比例,最好让模型“嵌入”预处理功能。

  1. IMG_SIZE = 180
  2. resize_and_rescale = tf.keras.Sequential([
  3. layers.experimental.preprocessing.Resizing(IMG_SIZE,IMG_SIZE),layers.experimental.preprocessing.Rescaling(1./255)
  4. ])
  5. model = tf.keras.Sequential(
  6. [
  7. 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"),]
  8. )
  9. model.compile(
  10. 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

如何解决''<='' 在 ''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)

产量:

''pandas._libs.tslibs.timestamps.Timestamp''> 2020-02-12 00:00:00+00:00

''pandas._libs.tslibs.timestamps.Timestamp''> 2020-02-12 00:00:00+00:00

''

什么给? LHS 显然是 pandas.Timestamp,RHS 显然是 numpy.ndarray。我的类型发生了什么神奇的事情吗?

'numpy.ndarray' 对象在 map 函数中不可调用,使用 numpy 数组

'numpy.ndarray' 对象在 map 函数中不可调用,使用 numpy 数组

如何解决''numpy.ndarray'' 对象在 map 函数中不可调用,使用 numpy 数组

我的目标是规范化二维 numpy 数组/矩阵的每一行。我以为会很简单.. 我正在尝试执行如下代码所示的地图操作。我查找了这个错误,它在像函数一样调用数组时发生,这不是我的情况..

输入参数(p_list)是一个二维的numpy数组:

  1. import numpy as np
  2. def normalize(p_list):
  3. if (type(p_list) == list):
  4. L = p_list
  5. else:
  6. L = p_list.tolist() # Converts numpy matrix to list of lists.
  7. print(type(L)) # L is of type list ! (even if p_list is of type numpy.ndarray)
  8. return list(map(lambda p: np.linalg.norm(p),L))

我的错误,发生在 list(map(...)) 行。 :

  1. 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):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等相关知识,可以在本站进行查询。

本文标签: