当前位置: 首页 > 科技观察

我用ChatGPT写了一个神经网络:一个字都没改,结果很好用

时间:2023-03-18 15:46:22 科技观察

自去年年底上线以来,对话式AI模型ChatGPT火遍全球社区。ChatGPT确实是一个了不起的工具,就像一个“潘多拉魔盒”。一旦找到正确的打开方式,您可能会发现自己离不开它。作为全能选手,人们对ChatGPT提出了各种各样的要求。有人用它写论文,有人让它互相聊天。这些都是常见的玩法。脑洞再大一点,既然ChatGPT是AI中的“王者”,它会写一个AI吗?最近,一位机器学习领域的博主突发奇想。他决定让ChatGPT搭建一个神经网络,并使用Keras来解决MNIST问题。MNIST被认为是机器学习领域的一个经典问题。尽管这个手写数字数据集已经逐渐淡出计算机视觉领域,但它的纪念意义却不容忽视。很多人入门深度学习的第一个数据集,第一个验证算法的实验就是MNIST。话不多说,想到就开始干吧。作者直接让ChatGPT写了一段代码,看起来完美无缺,甚至不需要改什么。这是一个很好的起点。ChatGPT选择分类交叉熵作为损失函数。作者提出重写分类交叉熵的代码,ChatGPT将其替换为稀疏分类交叉熵,更新后的代码仍然可以工作。可以发现,新的损失函数放弃了标签的分类转换。ChatGPT生成的代码使用全连接层,但作者想使用卷积层。于是ChatGPT按照说明修改了代码,增加了一个Conv2D和一个MaxPooling层。然后是评估最终模型的阶段,作者让ChatGPT使用测试集编写代码。结果看起来不错,ChatGPT的每条回复都附有完整的解释。例如在这个评估中,它是这样解释的:“评估”方法将测试数据和测试标签作为参数,并返回模型编译期间指定的损失和指标(此处为准确性)。上面的代码片段输出了测试准确率,这应该让您了解模型对新数据的泛化能力如何。该模型在训练期间使用整个测试集作为验证数据。作者随后要求ChatGPT将其更改为训练数据的20%。此外,作者希望使用更小的批次和更少的周期来运行代码。虽然此步骤不需要ChatGPT,但他不想在不更新ChatGPT上下文的情况下更改代码。所以这个任务还是落在了ChatGPT身上:接下来,作者打算画出训练过程中的训练和测试损失图。ChatGPT的建议是需要更改适合模型的线以捕获其结果值。为了展示数据集中的一些示例,作者要求ChatGPT编写代码来输出图像和标签的组合。这些输出的代码也很完美,集合了20张图像。在构建模型时,还需要查看其结构。如果你用这个问题去问ChatGPT,得到的答复是:ChatGPTgivesasummaryaboutthemodel:模型的总结很有用,但作者更希望看到模型结构图。于是不断追问:结果满意,终于可以部署模型了,让ChatGPT把模型保存到磁盘:现在,作者想创建一个类,使用保存的模型进行预测。这个提示很有趣,解决方案很完美。现在编写一个示例,使用预测器的类来预测10个随机图像的标签:为此,作者让ChatGPT显示一个混淆矩阵:ChatGPT使用的样式非常好,更不用说了。完成所有实验后,作者将ChatGPT生成的代码全部公布出来,大家也可以试试:地址:https://colab.research.google.com/drive/1JX1AVIIfGtIlnLGqgHrK6WPylPhZvu9qe?usp=sharing