类型错误:图像数据的形状无效(3072)

2024-01-23

这是我的事情:

我不想在 Colab 上运行,而是想读取本地 CIFAR10 数据集并使用以下代码玩 CNNcolab https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/images/cnn.ipynb#scrollTo=JWoEqyMuXFF4。首先,我成功下载了 CIFAR10 数据集。然后我用下面的代码来读取它:

import tensorflow as tf
import pandas as pd
import numpy as np
import math
import timeit
import matplotlib.pyplot as plt
from six.moves import cPickle as pickle
import os
import platform
from subprocess import check_output
classes = ('plane', 'car', 'bird', 'cat',
           'deer', 'dog', 'frog', 'horse', 'ship', 'truck')

# %matplotlib inline


img_rows, img_cols = 32, 32
input_shape = (img_rows, img_cols, 3)
def load_pickle(f):
    version = platform.python_version_tuple()
    if version[0] == '2':
        return  pickle.load(f)
    elif version[0] == '3':
        return  pickle.load(f, encoding='latin1')
    raise ValueError("invalid python version: {}".format(version))

def load_CIFAR_batch(filename):
    """ load single batch of cifar """
    with open(filename, 'rb') as f:
        datadict = load_pickle(f)
        X = datadict['data']
        Y = datadict['labels']
        X = X.reshape(10000,3072)
        Y = np.array(Y)
        return X, Y

def load_CIFAR10(ROOT):
    """ load all of cifar """
    xs = []
    ys = []
    for b in range(1,6):
        f = os.path.join(ROOT, 'data_batch_%d' % (b, ))
        X, Y = load_CIFAR_batch(f)
        xs.append(X)
        ys.append(Y)
    Xtr = np.concatenate(xs)
    Ytr = np.concatenate(ys)
    del X, Y
    Xte, Yte = load_CIFAR_batch(os.path.join(ROOT, 'test_batch'))
    return Xtr, Ytr, Xte, Yte
def get_CIFAR10_data(num_training=49000, num_validation=1000, num_test=10000):
    # Load the raw CIFAR-10 data
    cifar10_dir = './cifar10/'
    X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir)

    # Subsample the data
    mask = range(num_training, num_training + num_validation)
    X_val = X_train[mask]
    y_val = y_train[mask]
    mask = range(num_training)
    X_train = X_train[mask]
    y_train = y_train[mask]
    mask = range(num_test)
    X_test = X_test[mask]
    y_test = y_test[mask]

    x_train = X_train.astype('float32')
    x_test = X_test.astype('float32')

    x_train /= 255.0
    x_test /= 255.0

    return x_train, y_train, X_val, y_val, x_test, y_test


# Invoke the above function to get our data.
x_train, y_train, x_val, y_val, x_test, y_test = get_CIFAR10_data()enter code here

然后,为了显示数据集中的图像,我使用了我提到的链接中的原始代码:

plt.figure(figsize=(10,10))
for i in range(25):
    plt.subplot(5,5,i+1)
    plt.xticks([])
    plt.yticks([])
    plt.grid(False)
    plt.imshow(x_train[i], cmap=plt.cm.binary)
    # The CIFAR labels happen to be arrays, 
    # which is why you need the extra index
    plt.xlabel(classes[y_train[i][0]])
plt.show()

最后,出乎意料的是,它报错了:

    runfile('F:/Google Drive/DCM_Image_AI/untitled1.py', wdir='F:/Google Drive/DCM_Image_AI')
Traceback (most recent call last):

  File "F:\Google Drive\DCM_Image_AI\untitled1.py", line 85, in <module>
    plt.imshow(x_train[i], cmap=plt.cm.binary)

  File "C:\Users\liuji\Anaconda3\envs\Face_ recognition\lib\site-packages\matplotlib\pyplot.py", line 2677, in imshow
    None else {}), **kwargs)

  File "C:\Users\liuji\Anaconda3\envs\Face_ recognition\lib\site-packages\matplotlib\__init__.py", line 1599, in inner
    return func(ax, *map(sanitize_sequence, args), **kwargs)

  File "C:\Users\liuji\Anaconda3\envs\Face_ recognition\lib\site-packages\matplotlib\cbook\deprecation.py", line 369, in wrapper
    return func(*args, **kwargs)

  File "C:\Users\liuji\Anaconda3\envs\Face_ recognition\lib\site-packages\matplotlib\cbook\deprecation.py", line 369, in wrapper
    return func(*args, **kwargs)

  File "C:\Users\liuji\Anaconda3\envs\Face_ recognition\lib\site-packages\matplotlib\axes\_axes.py", line 5679, in imshow
    im.set_data(X)

  File "C:\Users\liuji\Anaconda3\envs\Face_ recognition\lib\site-packages\matplotlib\image.py", line 690, in set_data
    .format(self._A.shape))

TypeError: Invalid shape (3072,) for image data

 任何人都可以帮我解决这个问题。非常感谢。


我首先意识到你正在将像素值除以 255。 评论这些行。

x_train /= 255.0
x_test /= 255.0

之后像这样重塑你的形象

np.reshape(image, (32, 32, 3))

这应该有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类型错误:图像数据的形状无效(3072) 的相关文章

随机推荐

  • 如果没有const引用临时对象会被删除吗?

    我们来看看这两个函数 std string get string std string ret value Calculate ret value return ret value void process c string const c
  • 广播有延迟

    我们使用广播来传达远程服务和 UI 之间的状态更改 这样做时 我们发现了一个非常奇怪的行为 有时 我找不到任何线索为什么 这些广播会延迟 8 秒左右 我们如何发送它们 非常基本 mState只是一个枚举 服务中的远程进程 Intent in
  • D3 反转色标图以获得幅度

    我有一个 colorscaleMap 让我们假设这样的事情 d3 scale linear domain 0 01 0 02 0 03 0 04 0 05 range 5100ff 00f1ff 00ff30 fcff00 ff0000 现
  • 将文件存储在批处理文件中?

    您好 我正在尝试将二进制文件存储在我编写的基本批处理脚本中 基本上我希望脚本能够在某个时候输出这个预构建的文件 而不是从头开始创建它 如果这是不可能的 那么我必须将此文件与批处理文件分开包含 然后将其移动到必要的位置 但我宁愿让此文件对用户
  • 我可以从 node.js 设置 ulimit 吗?

    我想限制子进程写入太多数据或占用太多CPU时间 无限循环 在 C 中 我会调用 setrlimit 2 来做到这一点 Node js中有类似的东西吗 据我所知 没有node js扩展提供setrlimit 功能 但您可以通过一个小的 she
  • PHP 准备好的语句返回 -1

    我使用准备好的语句已经有一段时间了 从来没有遇到过任何问题 现在我正在尝试 sql SELECT PhotoID Caption FROM Photos WHERE EntityID AND TypeID LIMIT iDB new mys
  • 在 Perl 中使用 foreach 或 while 迭代文件有什么区别?

    我有一个文件句柄FILE在 Perl 中 我想迭代文件中的所有行 以下有区别吗 while
  • C、如何结合使用fgets和fscanf

    我有一份大学作业 即使用文件IO 有这样的TXT文件 Brian s213551 50 70 70 50 Alex Fernandes s210011 70 81 50 89 Young Lee s211213 60 80 60 90 an
  • 如何在 MySQL 中调用过程?

    我已经开始检查 MySQL 中的过程 但我所有的努力都不起作用 这是我的程序创建 DELIMITER CREATE PROCEDURE test IN a INT BEGIN SELECT FROM table WHERE id a END
  • KBUILD_DEFCONFIG_KMACHINE ?= defconfig_file 无法按预期工作

    KBUILD DEFCONFIG KMACHINE defconfig file没有按我的预期工作 我学到的第一课 defconfig config Bare Kernel Build 没有 yocto 下面是一个新的 defconfig
  • 在 Python 中调试期间绘制函数

    我曾经在 Matlab 中工作 在调试过程中使用可视化中间结果非常方便 当使用大数组 矩阵和嵌套函数时 plot功能 在Python中 我无法在调试模式下绘制任何内容 带有图形图的窗口永远不会加载 我正在使用Spyder IDE进行编码和m
  • 在 Google 地图的不同图层上显示标记集

    我需要在 Google 地图上显示一组标记 我知道可以直接在 Google 地图上添加标记 但鉴于我有 3 组标记 一组用于商店 一组用于公园 另一组用于酒店 我如何在 3 个不同的图层上显示它们 以便稍后使用 javascript 我可以
  • GRPC 异步响应流 C#

    如何从处理程序外部生成 RPC 的流响应值 具体来说 来自 IObservable 我目前正在执行以下操作 但这会产生跨线程问题 因为AnRxObservable在 RPC 处理程序之间共享 public override Task Get
  • 计算列中唯一值的每个实例

    假设你有一个 SQL 表格 Prices 13 99 14 00 52 00 52 00 52 00 13 99 您如何计算输入不同字段的次数 因此 此类计数的示例将输出 13 99 2 times 14 00 1 times 52 00
  • 在后台运行 Webrick 服务器?

    MBPro shovell myname ruby script server gt Booting WEBrick gt Rails 2 3 8 application starting on http 0 0 0 0 3000 gt C
  • tidytext::unnest_tokens 是否适用于西班牙语字符?

    我正在尝试将 unnest tokens 与西班牙语文本一起使用 它适用于一元语法 但会破坏二元语法中的特殊字符 该代码在 Linux 上运行良好 我添加了一些有关区域设置的信息 library tidytext library dplyr
  • Mono - 通过 SSL 的 HttpWebRequest - 写入标头时出错

    下面抛出一个 System Net WebException Error SendFailure Errorwriting headers over SSL 但工作正常http www google com http www google
  • 加速Python中的双循环

    有没有一种方法可以加快双循环的速度 从而更新上一次迭代的值 In code def calc N m x 1 0 y 2 0 container np zeros N 2 for i in range N for j in range m
  • 当我的应用程序在 Ionic 中关闭时,如何发送通知?

    我正在使用 Ionic 进行移动开发 我实际上正在使用本地通知 https ionicframework com docs native local notifications 每 5 分钟我会检查我的服务器是否有新问题 this chec
  • 类型错误:图像数据的形状无效(3072)

    这是我的事情 我不想在 Colab 上运行 而是想读取本地 CIFAR10 数据集并使用以下代码玩 CNNcolab https colab research google com github tensorflow docs blob m