想了解来自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中数组)
- "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 数组 (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。如您所见,我使用此代码将图片加载到数据框中:
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
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 内存使用情况
我正在使用 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
今天看到这样一句代码:
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的相关知识,请在本站搜索。
本文标签: