首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修正jupyter笔记本中的错误:图像数据不能转换为浮点?

如何修正jupyter笔记本中的错误:图像数据不能转换为浮点?
EN

Stack Overflow用户
提问于 2020-11-11 14:33:50
回答 1查看 79关注 0票数 1

我需要别人的帮助。

我还尝试了以下代码并得到了一个错误(这是关于pix2pix的,结果在本节中没有显示任何照片):

代码语言:javascript
复制
import tensorflow as tf

import os
import time
import numpy as np
from matplotlib import pyplot as plt
from IPython import display

PATH = os.path.join('datasets/','facades/', 'train/')

BUFFER_SIZE = 400
BATCH_SIZE = 1
IMG_WIDTH = 256
IMG_HEIGHT = 256

inp, re = load(PATH+'train/100.jpg')

plt.figure()
plt.imshow(inp/255.0)
plt.figure()
plt.imshow(re/255.0)

这是错误

代码语言:javascript
复制
  TypeError                                 Traceback (most recent call last)
<ipython-input-16-0ddde1d49d08> in <module>
      2 
      3 plt.figure()
----> 4 plt.imshow(inp/255.0)
      5 plt.figure()
      6 plt.imshow(re/255.0)

C:\ProgramData\Anaconda3\envs\generative\lib\site-packages\matplotlib\pyplot.py in imshow(X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, data, **kwargs)
   2699         filternorm=filternorm, filterrad=filterrad, imlim=imlim,
   2700         resample=resample, url=url, **({"data": data} if data is not
-> 2701         None else {}), **kwargs)
   2702     sci(__ret)
   2703     return __ret

C:\ProgramData\Anaconda3\envs\generative\lib\site-packages\matplotlib\__init__.py in inner(ax, data, *args, **kwargs)
   1808                         "the Matplotlib list!)" % (label_namer, func.__name__),
   1809                         RuntimeWarning, stacklevel=2)
-> 1810             return func(ax, *args, **kwargs)
   1811 
   1812         inner.__doc__ = _add_data_doc(inner.__doc__,

C:\ProgramData\Anaconda3\envs\generative\lib\site-packages\matplotlib\axes\_axes.py in imshow(self, X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, **kwargs)
   5492                               resample=resample, **kwargs)
   5493 
-> 5494         im.set_data(X)
   5495         im.set_alpha(alpha)
   5496         if im.get_clip_path() is None:

C:\ProgramData\Anaconda3\envs\generative\lib\site-packages\matplotlib\image.py in set_data(self, A)
    640         if (self._A.dtype != np.uint8 and
    641                 not np.can_cast(self._A.dtype, float, "same_kind")):
--> 642             raise TypeError("Image data cannot be converted to float")
    643 
    644         if not (self._A.ndim == 2

TypeError: Image data cannot be converted to float

我也对path进行了尝试,但是得到了相同的错误

代码语言:javascript
复制
 _URL = 'https://people.eecs.berkeley.edu/~tinghuiz/projects/pix2pix/datasets/facades.tar.gz'

path_to_zip = tf.keras.utils.get_file('facades.tar.gz',
                                      origin=_URL,
                                      extract=True)

PATH = os.path.join(os.path.dirname(path_to_zip), 'facades/')
EN

回答 1

Stack Overflow用户

发布于 2020-11-17 09:05:23

此错误通常意味着您没有正确读取图像中的内容。

我已经尝试过在Colab中执行pix2pix代码,并且成功地运行了。请您试一试下面的代码,并让我们知道您是否面临任何问题。

代码语言:javascript
复制
import tensorflow as tf
print(tf.__version__)
import os
import time
import numpy as np
from matplotlib import pyplot as plt
from IPython import display

_URL = 'https://people.eecs.berkeley.edu/~tinghuiz/projects/pix2pix/datasets/facades.tar.gz'

path_to_zip = tf.keras.utils.get_file('facades.tar.gz',
                                      origin=_URL,
                                      extract=True)

PATH = os.path.join(os.path.dirname(path_to_zip), 'facades/')

BUFFER_SIZE = 400
BATCH_SIZE = 1
IMG_WIDTH = 256
IMG_HEIGHT = 256

def load(image_file):
  image = tf.io.read_file(image_file)
  image = tf.image.decode_jpeg(image)

  w = tf.shape(image)[1]

  w = w // 2
  real_image = image[:, :w, :]
  input_image = image[:, w:, :]

  input_image = tf.cast(input_image, tf.float32)
  real_image = tf.cast(real_image, tf.float32)

  return input_image, real_image
  
inp, re = load(PATH+'train/100.jpg')

plt.figure()
plt.imshow(inp/255.0)
plt.figure()
plt.imshow(re/255.0)

只有在当前工作目录中有datasets时,才可以按下面的方式设置路径。

代码语言:javascript
复制
PATH = os.path.join('datasets/','facades/')
inp, re = load(PATH+'train/100.jpg')

代码语言:javascript
复制
PATH = os.path.join('datasets/','facades/', 'train/')
inp, re = load(PATH+'100.jpg')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64788453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档