一个简单的不需要重新定义dataset的方法

上接《关于VGG19训练8分类模型的总结》

其实在文件储存格式为data\train\...jpg的数据集导入时,可以直接用pytorch自带的一个函数导入。而不需要重写dataset的文件。我之前自己写自定义dataset的文件的时候直接被数据类型的报错搞疯,后来才发现竟然可以直接一步到位。贼气。

再重申一遍,文件层次是

data

        train

                cat(这是你分类的种类)

                        0.jpg

                        1.jpg

                         ......

                dog

        validation

                cat

                        .......

                dog    


data_dir = "./dam-v4"##我这里的文件地址格式是./dam-v4/train(validation)/class_name/.jpg
input_shape = 224

batch_size = 32
#data transformation
data_transforms = {
   'train': transforms.Compose([
       transforms.CenterCrop(input_shape),
       transforms.ToTensor(),

   ]),
   'validation': transforms.Compose([
       transforms.CenterCrop(input_shape),
       transforms.ToTensor(),

   ]),
}
 
image_datasets = {
   x: datasets.ImageFolder(
       os.path.join(data_dir, x),
       transform=data_transforms[x]
   )
   for x in ['train', 'validation']
}
 
dataloaders = {
   x: torch.utils.data.DataLoader(
       image_datasets[x], batch_size=batch_size,
       shuffle=True, num_workers=4
   )
   for x in ['train', 'validation']
}
 
dataset_sizes = {x: len(image_datasets[x]) for x in ['train', 'validation']}

 
class_names = image_datasets['train'].classes
print("数据读取成功")
print(dataset_sizes)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于一个简单的模型,可以考虑使用一个基于全连接层的神经网络,用于对输入数据进行分类或回归任务。 在构建模型时,需要定义输入和输出层的形状,以及每一层的神经元数量和激活函数。例如,如果输入数据是一个形状为 (batch_size, input_dim) 的张量,输出数据是一个形状为 (batch_size, output_dim) 的张量,可以使用以下代码构建一个简单的全连接神经网络模型: ```python import tensorflow as tf input_dim = 100 output_dim = 10 hidden_dim = 64 model = tf.keras.Sequential([ tf.keras.layers.Dense(hidden_dim, activation='relu', input_dim=input_dim), tf.keras.layers.Dense(output_dim, activation='softmax') ]) ``` 上面的代码中,我们使用了 Keras 中的 Sequential 模型,将两个全连接层按顺序堆叠在一起。第一个全连接层的输入维度为 input_dim,输出维度为 hidden_dim,激活函数为 relu;第二个全连接层的输入维度为 hidden_dim,输出维度为 output_dim,激活函数为 softmax。 在模型构建好之后,需要定义损失函数和优化器,并对模型进行编译。例如,如果是一个分类任务,可以使用交叉熵作为损失函数,使用 Adam 作为优化器,并且可以指定模型在训练过程中计算哪些指标。下面是一个示例代码: ```python model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) ``` 最后,需要将数据集分成训练集和测试集,并使用 fit() 方法训练模型。例如,下面的代码演示了如何使用一个随机生成的数据集训练模型: ```python import numpy as np x_train = np.random.rand(1000, input_dim) y_train = np.random.randint(output_dim, size=(1000,)) x_test = np.random.rand(200, input_dim) y_test = np.random.randint(output_dim, size=(200,)) model.fit(x_train, tf.keras.utils.to_categorical(y_train, num_classes=output_dim), epochs=10, batch_size=32, validation_data=(x_test, tf.keras.utils.to_categorical(y_test, num_classes=output_dim))) ``` 上面的代码中,我们使用了一个随机生成的数据集,其中训练集包含 1000 个样本,测试集包含 200 个样本。我们将输出标签转换为 one-hot 编码的形式,以便于在训练过程中计算损失函数。我们使用了 10 个 epoch 进行训练,每个 batch 包含 32 个样本。在每个 epoch 结束后,模型会自动在验证集上进行评估,并输出损失和准确率等指标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值