csv文件读取,激活函数

import torch
from torch.utils.data import Dataset, DataLoader
import pandas as pd
import os
from PIL import Image
from torchvision import datasets, transforms
from torchvision.datasets import ImageFolder
class MyCsvDataset(Dataset):
    def __init__(self, filepath):
        df = pd.read_csv(filepath)
        # 删除文字列
        df.drop(["学号", "姓名"], inplace=True, axis=1)
        # 转换为tensor
        t = torch.tensor(df.values, dtype=torch.float)
        # 最后一列以前的为data,最后一列为label
        data = t[...,:-1]
        label = t[...,-1]
        self.data = data
        self.label = label

    def __len__(self):
        return len(self.data)

    def __getitem__(self, index):
        data = self.data[index]
        label = self.label[index]
        return data, label


def load():
    filepath = '大数据答辩成绩表.csv'
    dataset = MyCsvDataset(filepath)

    dataloader = DataLoader(dataset, batch_size=10, shuffle=True)

    for data,label in dataloader:
        print(data)
        print(label)
        break


#图片数据集
class Imgdataset(Dataset):
    def __init__(self, folder):

        dirnames = []
        filepathlist = []
        labels = []
        for root, dirs, files in os.walk(folder):
            if len(dirs) > 0:
                dirnames = dirs
            for file in files:
                filepath = os.path.join(root, file)
                filepathlist.append(filepath)
                #获取label
                classname = os.path.split(root)[-1]
                index = dirnames.index(classname)
                labels.append(index)

        self.data = filepathlist
        self.labels = labels

    def __len__(self):
        return len(self.data)

    def __getitem__(self, index):
        filepath = self.data[index]
        img = Image.open(filepath)

        transform = transforms.Compose([
            #图片缩放,统一宽高
            transforms.Resize((112, 112)),
            transforms.ToTensor()
        ])

        t_img = transform(img)

        label = self.labels[index]
        return t_img, label



def test01():
    folder = os.path.join(os.path.dirname(__file__),'dataset')
    dataset = Imgdataset(folder)

    dataloader = DataLoader(dataset, batch_size=4, shuffle=True)
    for data,label in dataloader:
        print(data)
        print(label)
        break

#使用ImageFolder加载图片数据集
#前提:图片的存储目录结构需符合ImageFolder规定的目录结构
def test02():
    folder = os.path.join(os.path.dirname(__file__), 'dataset')


    transform = transforms.Compose([
        # 图片缩放,统一宽高
        transforms.Resize((112, 112)),
        transforms.ToTensor()
    ])
    dataset = ImageFolder(folder,transform = transform)

    dataloader = DataLoader(dataset, batch_size=4, shuffle=True)
    for data, label in dataloader:
        print(data)
        print(label)
        break


#加载MNIST数据集
def test03():
    transform = transforms.Compose([
        transforms.ToTensor()
    ])
    # MNIST():加载MNIST数据集
    # 参数:
    # root:保存数据集的路径
    # train:是否为训练数据,True-训练数据,False-测试数据
    # transform:图片预处理
    dataset_train = datasets.MNIST(
        root='./data',
        train=True,
        transform=transform,
        download=True
    )

    dataloader_train = DataLoader(dataset_train, batch_size=1, shuffle=True)

    for data, label in dataloader_train:
        print(data)

        data = torch.squeeze(data)
        transform = transforms.ToPILImage()
        img = transform(data)

        print(label)
        break


if __name__ == "__main__":
    test03()

import torch
import matplotlib.pyplot as plt
import torch.nn.functional as F
from torch import nn

# plt支持中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False


def test001():
    # 一行两列绘制图像
    _, ax = plt.subplots(1, 2)
    # 绘制函数图像
    x = torch.linspace(-10, 10, 100)
    y = torch.sigmoid(x)
    # 网格
    ax[0].grid(True)
    ax[0].set_title("sigmoid 函数曲线图")
    ax[0].set_xlabel("x")
    ax[0].set_ylabel("y")
    # 在第一行第一列绘制sigmoid函数曲线图
    ax[0].plot(x, y)

    # 绘制sigmoid导数曲线图
    x = torch.linspace(-10, 10, 100, requires_grad=True)
    # y = torch.sigmoid(x) * (1 - torch.sigmoid(x))
    # 自动求导
    torch.sigmoid(x).sum().backward()
    ax[1].grid(True)
    ax[1].set_title("sigmoid 函数导数曲线图", color="red")
    ax[1].set_xlabel("x")
    ax[1].set_ylabel("y")
    # ax[1].plot(x.detach().numpy(), y.detach())
    # 用自动求导的结果绘制曲线图
    ax[1].plot(x.detach().numpy(), x.grad.detach().numpy())
    # 设置曲线颜色
    ax[1].lines[0].set_color("red")

    plt.show()



#softmax()函数
def test02():
    x = torch.tensor([[1, -2, 3],[4,5,6]],dtype=torch.float)
    softmax = nn.Softmax()
    y = softmax(x)
    print(y)

if __name__ == "__main__":
    test02()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值