GVKun编程网logo

来自 numpy 数组的 Tensorflow 数据集(numpy中数组)

3

想了解来自numpy数组的Tensorflow数据集的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于numpy中数组的相关问题,此外,我们还将为您介绍关于"ValueError:Failed

想了解来自 numpy 数组的 Tensorflow 数据集的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于numpy中数组的相关问题,此外,我们还将为您介绍关于"ValueError: Failed to convert a NumPy array to an Tensor (Unsupported object type numpy.ndarray). 在 TensorFlow CNN 中进行图像分类、MNIST Tensorflow 数据集、numpy 数组的 Python 内存使用情况、numpy.random.random & numpy.ndarray.astype & numpy.arange的新知识。

本文目录一览:

来自 numpy 数组的 Tensorflow 数据集(numpy中数组)

来自 numpy 数组的 Tensorflow 数据集(numpy中数组)

如何解决来自 numpy 数组的 Tensorflow 数据集

我有两个 numpy 数组 (X,Y),我想将它们转换为 tensorflow 数据集。 According to the documentation 应该可以运行

train_dataset = tf.data.Dataset.from_tensor_slices((X,Y))
model.fit(train_dataset)

执行此操作时出现错误: ValueError: Shapes (15,1) and (768,15) are incompatible

如果 numpy 数组的形状与预期的输入/输出不兼容,这将是有意义的。 但是如果我通过使用 model.fit(X,Y) 用 numpy 数组运行它,它运行没有任何问题,所以形状似乎没问题。

在下一步中,我检查了输出尺寸:

>>> train_dataset.batch(4)
<BatchDataset shapes: ((None,768),(None,15)),types: (tf.int64,tf.uint8)>

神经网络的输入层期望 (None,None) 和输出 (None,15)。所以这似乎也匹配。

我的数据集相当大,所以很难分享,但这里有一个最小的可重现示例,它显示了这个问题。这是相同的错误,仅使用 numpy 数组即可。

import tensorflow as tf
from tensorflow.keras.layers import *
from tensorflow.keras import Model
import numpy as np

a = np.random.randint(10,size=(10,20,1))
b = np.random.rand(10,15)
train_dataset = tf.data.Dataset.from_tensor_slices((a,b))

inp = Input(shape=(None,),dtype="int32")
embedding = Embedding(12,300,trainable=False,mask_zero=True)(inp)
gru = Bidirectional(GRU(128,recurrent_dropout=0.5))(embedding)
out = Dense(64,activation=tf.nn.relu)(gru)
out = Dropout(0.5)(out)
out = Dense(15,activation=''sigmoid'')(out)
m = Model(inputs=inp,outputs = out)
m.compile("adam",''categorical_crossentropy'')

m.fit(a,b)
m.fit(train_dataset)

有人能指出我如何解决这个问题的正确方向吗?

Tensorflow 版本为 2.3.1。

"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

MNIST Tensorflow 数据集

MNIST Tensorflow 数据集

如何解决MNIST Tensorflow 数据集

我正在为这个命令苦苦挣扎 from tensorflow.examples.tutorials.mnist import input_data

我正在使用 Anaconda ,并尝试了很多可能性,python 版本 3.5.4 3.6 3.8 ... 张量流 2 张量流 1.14 1.8 ... 仍然没有成功:| 所以我尝试手动执行此操作,我的意思是在 tensorflow 目录中复制粘贴文件,即 [C:\\Users\\USERI\\anaconda3\\envs\\MYtf0\\Lib]

仍然 成功 :|

我知道还有另一种使用 keras 的方法,它适用于 keras (X_train,y_train),(X_test,y_test) = keras.datasets.mnist.load_data()

但是我会丢失来自 [tensorflow.examples.tutorials.mnist] 的 [input_data] 的所有方法......例如 = [mnist.train.next_batch]

任何帮助,请:/ 并提前致谢。

numpy 数组的 Python 内存使用情况

numpy 数组的 Python 内存使用情况

我正在使用 python 来分析一些大文件并且遇到了内存问题,所以我一直在使用 sys.getsizeof() 来尝试跟踪使用情况,但是 numpy
数组的行为很奇怪。这是一个涉及我必须打开的反照率地图的示例:

>>> import numpy as np>>> import struct>>> from sys import getsizeof>>> f = open(''Albedo_map.assoc'', ''rb'')>>> getsizeof(f)144>>> albedo = struct.unpack(''%df'' % (7200*3600), f.read(7200*3600*4))>>> getsizeof(albedo)207360056>>> albedo = np.array(albedo).reshape(3600,7200)>>> getsizeof(albedo)80

好吧,数据仍然存在,但对象的大小(3600x7200 像素图)已从 ~200 Mb 变为 80 字节。我希望我的记忆问题已经结束,只是将所有内容都转换为
numpy 数组,但我觉得这种行为,如果是真的,会在某种程度上违反信息论或热力学的某些定律,所以我倾向于相信 getsizeof() 不适用于 numpy
数组。有任何想法吗?

答案1

小编典典

您可以array.nbytes用于
numpy 数组,例如:

>>> import numpy as np>>> from sys import getsizeof>>> a = [0] * 1024>>> b = np.array(a)>>> getsizeof(a)8264>>> b.nbytes8192

numpy.random.random & numpy.ndarray.astype & numpy.arange

numpy.random.random & numpy.ndarray.astype & numpy.arange

今天看到这样一句代码:

xb = np.random.random((nb, d)).astype(''float32'') #创建一个二维随机数矩阵(nb行d列)
xb[:, 0] += np.arange(nb) / 1000. #将矩阵第一列的每个数加上一个值

要理解这两句代码需要理解三个函数

1、生成随机数

numpy.random.random(size=None) 

size为None时,返回float。

size不为None时,返回numpy.ndarray。例如numpy.random.random((1,2)),返回1行2列的numpy数组

 

2、对numpy数组中每一个元素进行类型转换

numpy.ndarray.astype(dtype)

返回numpy.ndarray。例如 numpy.array([1, 2, 2.5]).astype(int),返回numpy数组 [1, 2, 2]

 

3、获取等差数列

numpy.arange([start,]stop,[step,]dtype=None)

功能类似python中自带的range()和numpy中的numpy.linspace

返回numpy数组。例如numpy.arange(3),返回numpy数组[0, 1, 2]

今天关于来自 numpy 数组的 Tensorflow 数据集numpy中数组的讲解已经结束,谢谢您的阅读,如果想了解更多关于"ValueError: Failed to convert a NumPy array to an Tensor (Unsupported object type numpy.ndarray). 在 TensorFlow CNN 中进行图像分类、MNIST Tensorflow 数据集、numpy 数组的 Python 内存使用情况、numpy.random.random & numpy.ndarray.astype & numpy.arange的相关知识,请在本站搜索。

本文标签: