Cifar10 图像显示

Cifar10 图像显示

我原打算在网上借鉴一下,然后竟然没有找到简单的转化cifar10数据到图片的算法,算了,自己写一个

import  os
import  numpy as np
import  tensorflow as tf
from    tensorflow import keras
import matplotlib.pyplot as plt


tf.random.set_seed(22)
np.random.seed(22)
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
assert tf.__version__.startswith('2.')

# 导入cifar10 data
(x_train, y_train), (x_test, y_test) = keras.datasets.cifar10.load_data()
x_train, x_test = x_train.astype(np.float32) / 255., x_test.astype(np.float32) / 255.
shape=x_train.shape

# 看第二张图片
plt.imshow(x_train[2,:,:,:])
plt.show()

嗯,fine,其实就这一句:

plt.imshow(x_train[2,:,:,:])
plt.show()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来解释一下这个任务的具体步骤。 1. 数据准备 首先,我们需要下载 CIFAR-10 数据集并将其加载到内存中。可以使用 PyTorch 的 torchvision 库来完成此任务。以下是加载 CIFAR-10 数据集并进行数据增强的代码示例: ```python import torch import torchvision import torchvision.transforms as transforms # 数据增强 transform_train = transforms.Compose([ transforms.RandomCrop(32, padding=4), transforms.RandomHorizontalFlip(), transforms.ToTensor(), transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]) ]) transform_test = transforms.Compose([ transforms.ToTensor(), transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]) ]) # 加载训练集 trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform_train) trainloader = torch.utils.data.DataLoader(trainset, batch_size=128, shuffle=True, num_workers=2) # 加载测试集 testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform_test) testloader = torch.utils.data.DataLoader(testset, batch_size=128, shuffle=False, num_workers=2) ``` 2. 模型构建 接下来,我们需要构建一个用于 CIFAR-10 图像分类任务的模型。在这里,我们使用 Transformers 库中提供的 VisionTransformer 模型,并将其应用于 CIFAR-10 数据集。 ```python from transformers import ViTModel class ViT(nn.Module): def __init__(self): super(ViT, self).__init__() self.vit = ViTModel.from_pretrained('google/vit-base-patch16-224') self.fc = nn.Linear(768, 10) def forward(self, x): x = self.vit(x) x = x.last_hidden_state.mean(dim=1) x = self.fc(x) return x ``` 在上面的代码中,我们首先通过 ViTModel.from_pretrained 函数加载预训练的 Vision Transformer 模型。然后我们添加一个全连接层来对 CIFAR-10 数据集进行分类。 3. 损失函数和优化器 我们使用交叉熵损失函数和 Adam 优化器来训练模型。 ```python import torch.optim as optim criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) ``` 4. 训练模型 接下来,我们使用训练集对模型进行训练。在每个训练周期结束后,我们还会使用测试集对模型进行评估。 ```python for epoch in range(10): # 训练10个周期 running_loss = 0.0 for i, data in enumerate(trainloader, 0): # 输入数据 inputs, labels = data # 梯度清零 optimizer.zero_grad() # 前向传播,反向传播,优化 outputs = model(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() # 统计损失值 running_loss += loss.item() # 每2000个batch打印一次平均损失值 if i % 2000 == 1999: print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 2000)) running_loss = 0.0 # 在测试集上测试模型 correct = 0 total = 0 with torch.no_grad(): for data in testloader: images, labels = data outputs = model(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print('Accuracy of the network on the 10000 test images: %d %%' % (100 * correct / total)) ``` 5. 保存模型 最后,我们可以使用 PyTorch 的 torch.save 函数来保存训练好的模型。 ```python torch.save(model.state_dict(), 'vit_cifar10.pth') ``` 这将保存模型的权重到名为 vit_cifar10.pth 的文件中。 6. 画出曲线图 我们可以使用 Matplotlib 库来画出训练和测试损失的曲线图。 ```python import matplotlib.pyplot as plt plt.plot(train_losses, label='Training loss') plt.plot(test_losses, label='Test loss') plt.legend() plt.show() ``` 这将画出训练和测试损失的曲线图并显示出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值