我已经在 GitHub 上🤖新的交互式机器学习实验项目。

虽然模型可能有点笨(记住,这些只是实验,而不是生产就绪的代码),他们会尽力:

  • 🖌识别在浏览器中绘制的数字或草图
  • 📸检测和识别要显示给相机的对象
  • 🌅对上传的图像进行分类
  • 📝一起写一首莎士比亚诗
  • ✊🖐✌️玩你在摇滚纸剪刀游戏
  • 等。

我已经训练了_Python上的_模型_使用TensorFlow 2_与_Keras的支持_,然后使用他们在浏览器中使用_React和__JavaScript_版本的_Tensorflow演示_。

模型性能

⚠️ First,让我们设定我们的期望.️存储库包含机器学习实验,而不是生产就绪、可重用、优化和微调的代码和模型。这是一个沙盒或游乐场,用于学习和尝试不同的机器学习方法、算法和数据集。模型可能性能不好,并且有过度拟合/不拟合的地方。

因此,有时您可能会看到这样一些情况:

Image for post

Image for post

但要有耐心,有时模型可能会变得更聪明🤓并给你这个:

Image for post

Image for post

简介

  1. 🗓因为Python可能是开始尝试机器学习的一个不错的选择,我决定先学习它的基本语法。结果,一🐍学习Python项目的"游戏"和"备忘单"。这只是练习 Python, 同时有一个基本语法的备忘单, 一旦我需要它 (如等) 。dict_via_comprehension = {x: x**2 for x in (2, 4, 6)}
  2. 🗓学了一点Python之后,我想深入探讨机器学习背后的基本数学。因此,在通过一个真棒机器学习课程由Andrew Ng🤖自制机器学习项目出来。这次是为基本的机器学习数学算法(如线性回归、逻辑回归、k-means、多层感知器等)创建一个备忘单。
  3. 🗓下一次尝试玩基本的机器学习数学是一个🤖纳纳龙。它是大约7个简单的JavaScript函数,应该给你一种感觉,机器如何真正"学习"。
  4. 🗓在Coursera上完成了安德鲁 · 吴的另一个令人敬畏的深度学习专业化后, 我决定用多层感知器、卷积和循环神经网络 (CNN 和 Rnn) 练习更多一点。这一次,我决定开始使用一些机器学习框架,而不是从零开始实现所有内容。我最终使用TensorFlow 2Keras。我也不想太专注于数学(让框架为我做),相反,我想想出一些更实用,更适用的东西,我可以尝试在我的浏览器中玩的东西。因此,新的🤖机器学习实验出来了,我想在这里描述更多一点。

技术堆栈

模型培训

  • 🏋🏻我使用TensorFlow 2 中的 Keras进行建模和培训。 由于我对机器学习框架没有经验,我需要从一些开始。支持 TensorFlow 的一个卖点是,它具有具有类似API 的库的 Python和 JavaScript 风格。因此,最终我使用 Python 版本进行训练和 JavaScript 版本进行演示。
  • 🏋🏻在 Jupyter 笔记本中对 Python 进行了TensorFlow模型培训,有时还使用Colab使 GPU 上的训练速度更快。
  • 💻大多数型号都经过了旧版 MacBook 的 Pro CPU(2,9 GHz 双核英特尔酷睿 i5)的训练。
  • 🔢 当然,您无法从NumPy 中跑开矩阵/张子操作。

模型演示

  • 🏋🏻使用TensorFlow.js对以前训练过的模型进行预测。
  • ♻️_将Keras HDF5_模型转换为_TensorFlow.js层格式_我使用TensorFlow.js转换器。将整个模型(兆字节的数据)传输到浏览器而不是通过 HTTP 请求进行预测可能效率低下,但请记住,这些只是实验,而不是生产就绪的代码和体系结构。我想避免使用专用的端到端服务,使体系结构更简单。
  • 👨🏻 🎨演示应用程序是在 React上创建的,使用创建-React-应用程序启动器,默认为Flow味道进行类型检查。
  • 💅🏻对于样式,我使用了材质UI。这是,正如他们说,“杀死两只鸟"一次,并尝试一个新的造型框架(对不起,Bootstrap🤷🏻)。

实验

因此,简而言之,您可以通过以下链接访问演示页面和 Jupyter 笔记本:

多层感知器(MLP)实验

多层感知器 (MLP) 是一类前馈人工神经网络 (ANN)。多层感知器有时称为"香草"神经网络(由多层感知器组成),尤其是当它们具有单个隐藏层时。

手写数字识别

绘制一个数字,模型尝试识别它。

Image for post

Image for post

手写草图识别

绘制草图,模型尝试识别草图。

Image for post

Image for post

卷积神经网络(CNN)的实验

积神经网络(CNN 或 ConvNet)是一类深度神经网络,最常用于分析视觉图像(照片、视频)。它们用于检测和分类照片和视频上的对象、样式传输、人脸识别、姿势估计等。

手写数字识别 (CNN)

绘制一个数字,模型尝试识别它。这个实验类似于 MLP 部分的实验,但它在引擎盖下使用 CNN。

Image for post

Image for post

手写草图识别 (CNN)

绘制草图,模型尝试识别草图。这个实验类似于 MLP 部分的实验,但它在引擎盖下使用 CNN。

Image for post

Image for post

石纸剪刀 (CNN)

你玩一个岩石纸剪刀游戏与模型。这个实验使用从零开始训练的CNN。

Image for post

Image for post

摇滚纸剪刀 (MobilenetV2)

你玩一个岩石纸剪刀游戏与模型。此模型使用传输学习,基于MobilenetV2

Image for post

Image for post

对象检测 (MobileNetV2)

通过相机向模型显示环境,它会尝试检测和识别对象。此模型使用传输学习,基于MobilenetV2

Image for post

Image for post

图像分类(移动网络V2)

上传图片,模型会根据图片上的"看到"内容对其进行分类。此模型使用传输学习,基于MobilenetV2

Image for post

Image for post

复发神经网络实验(RNN)

循环神经网络 (RNN) 是一类深度神经网络,通常应用于基于序列的数据,如语音、语音、文本或音乐。它们用于机器翻译、语音识别、语音合成等。

数字求和

键入求和表达式 (即 ),模型预测结果 (即 )。这里有趣的部分是,模型将输入视为一个_序列_,这意味着它了解到,当你键入一个序列→ → → →它"翻译"到另一个序列。你可以把它翻译成西班牙语序列来翻译为英语。

17+38
55
1
17
17+
17+3
17+38
55
Hola
Hello

Image for post

Image for post

莎士比亚文本生成

你开始打一首像莎士比亚的诗,模型将像莎士比亚一样继续。至少它会尝试这样做😀。

Image for post

Image for post

维基百科文本生成

您开始键入 Wiki 文章,模型尝试继续它。

Image for post

Image for post

未来计划

正如我上面提到的,存储库的主要目的是更像一个学习的游乐场,而不是生产就绪的模型。因此,主要计划是继续学习和试验深度学习的挑战和方法。接下来要玩的有趣挑战可能是:

  • 情绪检测
  • 样式传输
  • 语言翻译
  • 生成图像(即手写数字)
  • 等。