You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TensorFlow中导入GitHub存储的图像分类训练数据集

TensorFlow.js 导入GitHub托管分类图像数据方案

你当前使用JavaScript技术栈开发,图像按分类存放在GitHub可直接访问的raw路径下,不需要打包为tgz格式,可沿用之前的批量加载逻辑,配合TensorFlow.js内置的图像处理API完成数据集构造,具体操作如下:

  • 第一步:定义基础配置
    提前声明分类信息、路径前缀、输入图像参数等固定配置:
// 分类配置:对应三个类别的标签、GitHub raw路径前缀、分类索引
const CLASS_LIST = [
  { name: 'Linear', pathPrefix: 'https://raw.githubusercontent.com/替换为你的仓库实际路径/LineSine_', idx: 0 },
  { name: 'Quadratic', pathPrefix: 'https://raw.githubusercontent.com/替换为你的仓库实际路径/QuadSine_', idx: 1 },
  { name: 'Cubic', pathPrefix: 'https://raw.githubusercontent.com/替换为你的仓库实际路径/CubicSine_', idx: 2 }
]
const PER_CLASS_SAMPLE = 1000 // 每个类别样本总数
const INPUT_IMG_SIZE = 224 // 根据你的CNN输入要求调整尺寸
  • 第二步:封装图像加载预处理方法
    将图像加载、跨域处理、张量转换、归一化等逻辑封装为异步函数:
async function processSingleImage(url, classIdx) {
  // 加载图像并处理跨域
  const img = new Image()
  img.crossOrigin = 'anonymous'
  await new Promise((res, rej) => {
    img.onload = res
    img.onerror = rej
    img.src = url
  })
  // 转换为TensorFlow可用的张量格式
  return tf.tidy(() => {
    const imgTensor = tf.browser.fromPixels(img)
      .resizeNearestNeighbor([INPUT_IMG_SIZE, INPUT_IMG_SIZE])
      .toFloat()
      .div(255) // 像素值归一化到0-1区间
    const labelTensor = tf.oneHot(classIdx, 3) // 生成3分类独热标签
    return { img: imgTensor, label: labelTensor }
  })
}
  • 第三步:批量加载构造训练数据集
    遍历所有样本加载完成后,转换为TensorFlow.js的Dataset格式,可直接用于后续训练:
async function getTrainDataset() {
  const sampleList = []
  // 遍历所有类别批量加载
  for (const cls of CLASS_LIST) {
    for (let i = 0; i < PER_CLASS_SAMPLE; i++) {
      const sample = await processSingleImage(`${cls.pathPrefix}${i}.png`, cls.idx)
      sampleList.push(sample)
    }
  }
  // 构造Dataset并打乱顺序
  return tf.data.zip({
    xs: tf.data.array(sampleList.map(item => item.img)),
    ys: tf.data.array(sampleList.map(item => item.label))
  }).shuffle(sampleList.length)
}

注意:如果样本加载耗时过长,可改为分批加载、边加载边训练,避免一次性全量加载占用过高内存。如果你后续切换到Python版TensorFlow训练,直接把整个数据集目录打包为zip/tgz包上传到GitHub,即可复用官方示例中tf.keras.utils.get_file的逻辑,指定对应解压参数下载后即可读取。

内容的提问来源于stack exchange,提问作者rb3652

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 01:57:04