ImageNet图像分类任务(读取本地文件)

ImageNet图像分类任务(读取本地文件)

1.准备工作:从CSDN下载mini-ImageNet数据集,选取5个大类,每个600张图片。本人选取的是‘jellyfish’, ‘snake’, ‘spider’, ‘toucan’, ‘triceratops’这五类。在项目文件夹下创建‘data’文件夹,文件夹下包含‘jellyfish’, ‘snake’, ‘spider’, ‘toucan’, ‘triceratops’五个子文件,每个子文件包含对应600张图片。
在这里插入图片描述
2.读取本地数据为对应的 X_train, Y_train, X_test, Y_test,并以‘.npy’格式保存于’.npz’文件中,备用:

import glob#glob是python自带的一个操作文件的相关模块,由于模块功能比较少,所以很容易掌握。用它可以查找符合特定规则的文件路径名。使用该模块查找文件,只需要用到: “*,?,[]”这三个匹配符;
import os
import cv2 #图像处理库
import numpy as np
import random
import tensorflow as tf
from tensorflow import keras

def Data_Generation():
    X_data = [];Y_data = []
    path_data = [];path_label = []

    files = os.listdir('data')#os.listdir()用于返回一个由文件名和目录名组成的列表

    for file in files:
        print(file)
        for path in glob.glob('data/' + file + '/*.*'):#返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。
            if 'jpg' or 'png' or 'jpeg' in path:
                path_data.append(path)

    random.shuffle(path_data)#打乱文件

    for paths in path_data:#生成标签
        if 'jellyfish' in paths:
            path_label.append(0)
        elif 'snake' in paths:
            path_label.append(1)
        elif 'spider' in paths:
            path_label.append(2)
        elif 'toucan' in paths:
            path_label.append(3)
        elif 'triceratops' in paths:
            path_label.append(4)

        img = cv2.imread(paths)
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        img = cv2.resize(img, (64, 64))
        X_data.append(img)

    L = len(path_data)
    Y_data = path_label
    X_data = np.array(X_data, dtype=float)
    Y_data = np.array(Y_data, dtype='uint8')
    X_train = X_data[0:int(L * 0.8)]#训练数据分配
    Y_train = Y_data[0:int(L * 0.8)]
    X_test = X_data[int(L * 0.8):]#测试数据分配
    Y_test = Y_data[int(L * 0.8):]
    return X_train, Y_train, X_test, Y_test, L


X_train, Y_train, X_test, Y_test, L = Data_Generation()
np.savez(os.path.join('data', 'data.npz'), X_train=X_train, Y_train=Y_train, X_test=X_test, Y_test=Y_test)
#np.savez保存多个数组到一个文件中,保存格式为'.npz',该文件含有多个'.npy‘格式的文件
#os.path.join('data', 'data.npz')用于拼接'data', 'data.npz'

3.下载所保存的’.npz’数据并调用,建立简单的‘顺序‘’全连接神经网络。

import tensorflow as tf
from tensorflow import keras
import numpy as np
print(tf.__version__)

# 数据加载
data = np.load('G:\\python2\\pythonProject6\\data\\data.npz')#下载所保存的数据
X_train = data['X_train']
Y_train = data['Y_train']
X_test = data['X_test']
Y_test = data['Y_test']

X_train = X_train / 255.0
X_test = X_test / 255.0

# 网络搭建设置
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(64, 64, 3)),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(5)
])#搭建顺序结构网络

model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])
# 网络并测试网络
model.fit(X_train,Y_train, epochs=15)
model.evaluate(X_test,Y_test, verbose=2)
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Java IO或者NIO API来读取本地文件,Spring Boot也提供了一些方便的工具类来简化文件读取的操作。例如,可以使用ResourceLoader来获取文件资源,使用FileUtils来读取文件内容等。具体的实现方式可以参考Spring Boot官方文档或者相关的教程。 ### 回答2: Spring Boot可以使用Java的IO类来读取本地文件。下面是一个使用Spring Boot读取本地文件的示例代码: 1. 首先,需要在pom.xml文件中添加以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 2. 创建一个Controller类,用于接收HTTP请求并返回文件内容: ```java @RestController public class FileController { @GetMapping("/file") public ResponseEntity<byte[]> getFile() throws IOException { // 读取本地文件 File file = new File("path/to/local/file.txt"); // 将文件内容转换为字节数组 byte[] content = Files.readAllBytes(file.toPath()); // 设置HTTP响应头,告诉浏览器以下载的方式打开文件 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData("attachment", file.getName()); // 返回响应对象 return new ResponseEntity<>(content, headers, HttpStatus.OK); } } ``` 3. 启动Spring Boot应用程序,访问`http://localhost:8080/file`链接即可下载本地文件。 请确保将代码中的`path/to/local/file.txt`替换为实际的本地文件路径,并确保文件存在。 ### 回答3: Spring Boot是一个开源框架,用于创建独立的、基于Java的生产级应用程序。在Spring Boot中,可以使用一些简单的步骤来读取本地文件。 首先,我们需要使用Java的IO类库来读取文件。可以使用File类来表示本地文件,并使用FileReader和BufferedReader来读取文件内容。在Spring Boot中,可以在项目的类路径下创建一个resources文件夹,并将要读取文件放在该文件夹下。 接下来,需要创建一个Spring Boot的应用程序,并编写一个处理请求的Controller类来处理文件读取的请求。可以使用注解@RequestMapping来指定处理请求的URL路径。 在Controller类中,可以使用Java的IO类库来读取本地文件的内容。首先,需要使用ClassLoader类的getResourceAsStream()方法来获取文件的输入流。然后,使用InputStreamReader和BufferedReader类来读取文件内容。 最后,将读取到的文件内容返回给客户端。可以使用@ResponseBody注解来将方法的返回值转换为JSON格式,并通过浏览器访问URL路径来查看读取到的文件内容。 总结起来,使用Spring Boot读取本地文件的步骤如下: 1. 创建一个Spring Boot的应用程序。 2. 在resources文件夹下放置要读取的本地文件。 3. 编写一个处理请求的Controller类,并使用@RequestMapping注解来指定处理请求的URL路径。 4. 在Controller类中使用Java的IO类库来读取本地文件的内容,并通过@ResponseBody注解将读取到的文件内容返回给客户端。 这样,在启动Spring Boot应用程序后,就可以通过浏览器访问指定的URL路径来读取本地文件的内容了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值