1. FlyPython首页
  2. Python高级话题

使用 OpenAi 的 Github Copilot 生成 Python 代码

使用 OpenAi 的 Github Copilot 生成 Python 代码

约书亚·阿拉贡( Joshua Aragon)Unsplash上的照片

使用 AI 为简单的神经网络、数据可视化等生成 Python 脚本

我已经有一段时间没有访问 OpenAi 的Github copilot 的技术预览了。从那时起,我开始喜欢以函数名称和描述的形式向它提问各种问题,看看它能想出什么样的代码。

在这篇文章中,我将分享我如何使用 Github Copilot 扩展为 VS Code(技术预览)生成 Python 脚本,从 Keras 中的简单神经网络和数据可视化脚本到关于存在秘密的评论

使用 Github Copilot 生成脚本

当你三中号所有的炒作和类似世界末日讲的语言模型,如GPT-3的,甚至可以和他们一起玩一点点,你会发现黄金三镖客对这类应用的范围。

通过揭开它们的真正潜力,我们可以评估这个令人难以置信的工具,它可能对无数不同的问题有用(假设有效的问题得到解决),并了解其技术局限性,例如缺乏真正的类人上下文理解基本句子。

一个带有 Keras 的简单神经网络

让我们从 Keras 中的一个简单神经网络开始。对于第一个脚本,我给模型的所有输入是:

def SimpleNeuralNetKeras():
    通过

AI 生成的自动完成的输出是这样的:

def SimpleNeuralNetKeras(): 
    net_net = Sequential() 
    net_net.add(Dense(units=1, input_dim=1)) 
    net_net.compile(loss='mean_squared_error', optimizer='adam') 
    net_net.fit(x_train, y_train, epochs =100,batch_size=1,verbose=0) 
    net_net.evaluate(x_test,y_test,batch_size=1,verbose=0) 
    net_net.predict(x_test,batch_size=1,verbose=0) 
    net_net.save('my_model.h5' ) 
    net_net = load_model('my_model.h5') 
    net_net.predict(x_test, batch_size=1,verbose=0) 
    net_net.evaluate(x_test, y_test, batch_size=1,verbose=0) 
    net_net.fit(x_train, y_train, epochs =100,batch_size=1,verbose=0)
    net_net.evaluate(x_test,y_test,batch_size=1,verbose=0)
    net_net.predict(x_test, batch_size=1,verbose=0) 
    net_net.save('my_model.h5') 
    """....它继续"""

虽然它继续建议对同一模型进行再训练,但如果我们减掉脂肪,我们得到的结果是:

def SimpleNeuralNetKeras(): 
    net_net = Sequential() 
    net_net.add(Dense(units=1, input_dim=1)) 
    net_net.compile(loss='mean_squared_error', optimizer='adam') 
    net_net.fit(x_train, y_train, epochs =100,batch_size=1,verbose=0) 
    net_net.evaluate(x_test,y_test,batch_size=1,verbose=0) 
    net_net.predict(x_test,batch_size=1,verbose=0) 
    net_net.save('my_model.h5' )

诚实地!一点也不差!让我们看看当我要求它创建一个假数据集来匹配这个神经网络设置时会发生什么:

我在这里的输入很简单:

x_train,

我得到的是:

x_train,y_train,x_test,y_test = get_data()

有趣的。让我们看看模型是否真的可以get_data()为我们写出函数。

我的意见是:

def get_...

字面意思就是这样,我完全自动得到的是:

def get_data(): 
    """
    该函数用于获取神经网络的数据。
    """ 
    # 加载数据
    data = np.loadtxt('data.csv', delimiter=',') 
    # 拆分数据
    x = data[:, :-1] 
    y = data[:, -1] 
    # 拆分数据
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42) 
    return x_train,y_train, x_test,y_test

它看起来确实很整洁,虽然在其他一些小细节中的解包xy看起来有点奇怪,但是,它确实看起来像一段只需稍作调整就可以运行的代码。

数据可视化

谋划怎么样?我们能得到一些合成数据的漂亮图吗?

这也是我对模型的输入:

def plotFakeData(): 
    """
    此函数创建一些
    正态分布数据的假数据集,并绘制
    通过 sin 函数传递的结果。
    """

这是我得到的:

def plotFakeData(): 
    """
    这个函数创建了一些
    正态分布数据的假数据集,并绘制了
    通过 sin 函数传递它的结果。
    """ 
    import numpy as np 
    import matplotlib.pyplot as plt 
    # 创建一些假数据
    x = np.linspace(0, 10, 100) 
    y = np.sin(x) + np.random.normal(0, 0.1, 100) 
    # 绘制数据
    plt.plot(x, y) 
    plt.show()

看起来很接近!我们要测试一下吗?

plotFakeData()
PNG

它实际上运行!多么酷啊?

使用 OpenAi 的 Github Copilot 生成 Python 代码

使用 OpenAi 的 Github Copilot 生成 Python 代码

照片由MI PHAMUnsplash拍摄

尽管创建的数据不是正态分布的(我的意思是这只是我脑海中随机出现的一些东西),但该模型确实在通过 sin 函数后将正态分布的噪声添加到一系列数据点中,然后绘制数据成功。

编写测试

现在,如何为已经定义的函数编写测试?

我的输入是:

def sum_Square(a,b):
    返回(a+b)**2 def test_sum_Square():
    通过

我得到了什么:

def test_sum_Square(): 
    assert sum_Square(2,3) == 25 
    assert sum_Square(3,5) == 55 
    assert sum_Square(3,5) != 56test_sum_Square()# 输出(在 jupyter notebook 上运行)AssertionError Traceback(最近一次调用)<module> 中的 <ipython-input-94-b8fb676bf724> 
----> 1 test_sum_Square() <ipython-input-93-bf52191596f9>在 test_sum_Square() 
      1 def test_sum_Square(): 
      2 assert sum_Square(2,3) == 25 
----> 3 assert sum_Square(3,5) == 55 
      4 assert sum_Square(3,5) != 56 AssertionError: 

不错!实际上第一个和第三个测试是正确的,第二个不是那么多,因为对于 3 和 5 的预期结果是 64。 尽管如此,令人印象深刻的是,该模型实际上可以从一个简单的函数定义。

使用 OpenAi 的 Github Copilot 生成 Python 代码

加布里埃拉·克莱尔·马里诺( Gabriella Clare Marino)Unsplash上的照片

使用 github copilot 获得哲学

在玩过可能对模型有用的应用程序之后,我决定,只是为了好玩,问一些随机的伪哲学问题,看看模型会得出什么样的答案。

我的输入:

def writeArticleAboutSecretOfExistence():
    通过

我得到了什么:

def writeArticleAboutSecretOfExistence(): 
    """
    存在的秘诀就是合一。
    """

那是一篇简短的文章,但至少作为一个句子,它确实有一定的意义。我绝对可以想象一位老哲学家或僧侣向一位在假设的智慧之山某处寻求知识的旅行者提供这种建议。

使用 OpenAi 的 Github Copilot 生成 Python 代码

使用 OpenAi 的 Github Copilot 生成 Python 代码

霍莉·曼达里奇( Holly Mandarich)Unsplash上的照片

当然,函数应该是代码,但我只是在玩一些书呆子的乐趣;)。

另一个:

def writeArticleAboutHowToSolveAnyProblem():
    通过

我有:

def writeArticleAboutHowToSolveAnyProblem(): 
    """
    解决任何问题的秘诀就是换个角度思考问题
    """ 
    pass

好吧,现在你知道了,换一种方式思考你的问题,然后繁荣!你解决了!

原创文章,作者:flypython,如若转载,请注明出处:http://flypython.com/advanced-python/492.html