Cortex是第一个支持人工智能(AI)模向上链和执行的去中心化人工智能区块链平台。Cortex提供了一个开源的人工智能平台,实现了人工智能的民主化,使得模可以很容易地写入智能合约中,并创建支持人工智能的去中心化程序(dapps)。本文将为您提供一个关于如何部署一个简单的“helloworld”Ai-DAPP的教程。如果您想了解有关cortex技术文档的更多信息,请单击此链接:
( https://github.com/CortexFoundation/tech-doc)。
在本教程的**,您将初步了解如何在cortex-chain上编写手写数字识别AI-DAPP操作。契约从用户处获取输入图像,通过调用链上的AI模判断图像的0-9个数,并给出最终的图像数。
“你好世界”艾达普
基本配置
~ Chrome浏览器
~ Cortex钱包镀铬扩展
~在cortex测试代币(来自水龙头或支持ERC20代币的交换机)准备好进行上述配置后,请确保您的cortex钱包在测试网络上。
单击cortex wallet扩展,输入密码,在钱包顶部,您将看到:
如果没有,请单击下拉箭头并切换到Dolores test network。(您可能需要刷新,然后重复上述步骤)
编辑合同
本教程的合同编辑是在cortex官方ide混合版中完成的。您可以在其他编辑器中编辑它,然后将代码粘贴到cortex官方ide混合体中。
现在打开cortex的官方ide混音(链接:大脑皮层实验室.ai/remix/)然后写合同,你可以分发。
本教程的所有合同代码
布拉格玛扎扎玛扎扎玛扎扎比^ 0.4.18;合同合同因果关系推断推断{/>启动变量uint256[]公共公共输入输入输入数据数据数据//地址地址地址地址地址为链上链上链上链上链模模模地址地址地址地址modelAddr建模地址地址地址地址地址建模地址地址地址为:0x420bd8d2fe7351514e9b7777fdbc78c78c07306fd8a12866////0x420bd8d8d2247351514e9b7777fd77fdbc78c78c08c07306f8a2866的地址//地址地址地址地址地址地址地址地址地址地址地址地址地址地址地址地址地址地址地址地址地址地址地址地址地址在;将存储在该变量uint256 public currentInferResult()constructor()public{/此处定义输入数据的维度。以馈送维度1*1的图像输入;*28将28将将28将将28将纳入到该模中,我们我们需要1 1 1 1 1 1 1 1 1将1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1将28 28 28字节的28字节。现在,////现在,现在,每一个uint256 uint256在坚固性中的坚固性是32字节32字节。这也正是39 39;39为为什么我们为什么需要将我们需要除除1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1将1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1将1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;1 1 1 1 1 1 1 1 1 1 1 1;1;1 1;1 1 28*28由;32和团圆起来的32和团圆起来的团圆。/>要表达这个部门这个部门在坚固性上,我们写的我们写的(1 1 1*11 28 28 28 28 28 28 28 p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;允许;有效地将美国到有效地圆化了上来的美国将有效地圆化向上。输入输入_Ui数据新设新的新设新的uint256[]((1 1 *1 1 28 28 28 28 +31)gt;5)5);(}////您可以选择选择选择选择以随机方式随机产生随机产生输入输入输入的方式随机产生输入输入输入,如反对以反对的方式取得取得取得的投入投入,则反对以反对的方式取得取得取得的投入输入输入输入的随机产生。输入;从用户函数generaterAndInput()public{input_Udata[0]=uint(sha256(now));for(uint ii=1 iinputu数据长度;++i){input_2;data[i]=uint(sha256(输入数据[i-1]);}};函数SetInput(uint256[]数据)公共{for(uinti0;ilt;input数据长度;++i){input_2;data[i]=data[i];}}//使用随机生成的输入图像函数识别数字;DigiTricognitionInFer()(publicuint256[]内存内存输出输出=nbsp新的新的uint256[](uint256(1(1));inferArray(modelAddr,输入输入输入数据数据数据,输出输出输出);currentInferResult;=(输出[0]-gt;(25632;32))((1(1lt;lt;32;32)(1(1lt;32;32)1;1);1);nb;currentInferResult=当前推断结果%10}}
这里是我们要编译的所有代码。现在我们将解释如何在cortex官方ide混音中编辑它
Cortex官方ide混音接口,新建一个接口,如下图:
A602A605
开始创建合同,如下所示:
请注意,上述合同代码放在cortex官方ide Remix编辑区。这是合同中最重要的功能。它接受一个大小为1x3x32x32的输入图像数组,并返回一个介于0和9之间的数字作为输出,告诉您图像中的哪个数字。
启动合同启动准备工作。代码布局完成后编写合同。首先点击页面左侧的plug选项,然后激活两个模块:“deployandexecutetransaction”和“SOLidness editor”,如下图:
这份合同需要先准备好。因此,单击左侧的选项卡,该选项卡看起来像上下括号。然后单击“编译”编译您的合同。编译成功后,左边的图标会有一个绿色的标志,如下图:
现在将契约部署到测试网络,点击左侧cortex图标进入deploy页签,如下图:
现在,如果没有弹出窗口,请单击右上角的cortex wallet查看交易窗口。您可以将所有内容保留为默认值,然后单击“确定”(您应该看到帐户已自动填写;否则,您可能需要登录到您的钱包并重新加载)将弹出一个钱包窗口,要求您确认交易,如下所示。查看详细信息,然后再次单击“确定”,如下所示:
几分钟后,您的合同应已成功部署并显示在部署合同部分,如下所示:
点击下拉菜单,你会看到所有的函数,你可以选择调用它们。单击剪贴板,您将看到您的合同地址。请确保保存此地址,以便您知道合同的部署位置。
在这个阶段,你已经做了很多工作:你可以点击generate random input生成一个随机输入(记住要确认你的cortex钱包的功能调用),然后点击数字识别信息来确定随机生成的输入是什么。如果您单击CurrentInferResult,您将看到类似“0:uint256:number number”的内容,其中number是您的推断。
现在,我们已经完成了在cortex上开发的整个工作流。然而,在随机生成的输入图像上运行程序是很无聊的。为了完整和有趣,我将继续向您展示如何获得用户输入,包括编写python脚本!
Python脚本操作
使用此Python脚本将自定义图像转换为支持大小的数组。
打开终端并第一次运行它(首先确保您的计算机上已经安装了Python)。如果你不能,你可以在网上搜索许多这样的教程)
终端输入代码:
pip3安装枕头
启动一个python文件并将其命名为“转换.py“它将输入自定义图像并输出一个像素值数组,其大小与我们上面的合同兼容!请确保将自定义图像与此脚本放在同一目录中。
(编辑器的操作是使用sublime文本编辑器**Python代码并保存它。)
Python文件代码:
importsysfromPIL;importImageimg=;图像.打开( 系统argv[1] )img=;图像大小调整(28,28)img=;图像负载()h=39;0123456789abcDeFi39;s=39;对于i在范围(28):范围(28)内的j:t=0;如果;类(img[j,i i])是指;是指int:t=img[j,[i]i]2其他:为将kk在img[j,i]:tt+=kttp;p;p;len(img[j,i])p;2;2p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p 16]+h[t%16]ret=[]范围内(0,伦(s)伦(s)64(64):若将i i ilt;=len(s):ei+64 i+64若ee伦(s)伦(s)subs 伦(s)子数(64):若(i:e)若若若若伦(子)64:若;若(i:e)若;若若伦(子)64:则64:子公司将i+64;i+i+64;若若i+64i+64;若则若若将将;则(s)i+64;i+64;i+64;35;39;0#39*(64-长度(subs));重新附加(39;x39;+subs)其他:重新附加39(假若ᙧ39;0x#39;39#39;39(39;39;0(39;39;39;39;39;39;0(39;39;39;0(39;39;39;[#39;39;[#39;39;[#39;3935; 39;39;加和#39;39;和#39;39;39;合和#39;39;和#39;39;加入([35; 39;39;39;39;39;39;quot;;quot;;quot;;A6#39+x;+39;quot;#39;对于xret])+39;39;)
注意:上面的python脚本只适用于MNIST测试设置-如果您想获得自定义图像的像素值,您可能需要相应地修改它。
保存python文件后,我们可以在终端上操作以下代码:
蟒蛇3;转换.pynbsp你的图像姓名.jpg
你的小弟弟姓名.jpg转换为Python3,并将您的“替换名称”转换为实际的图像名称!如果一切顺利,终端应该输出一个像素值数组,你可以**它。(如果你需要更多的测试,在kagglehttps://www.Kaggle.com/scolianni/mnistasjpg更多类似的数字图像可以在上找到。)
Python程序应该返回如下数组:
[quot;0x000000000000000100000020100005000000700000900000000quot;,quot;0x000000000060000300000100100000000000000000000quot;,quot;0x030400040000004000009000000A0002000000000000000000quot;,quot;0x000000000000000500000501000000000000000000060007050D110826quot;,quot;0x5a5911020000000000000000000000000000000000004b7f7d7d797e7e7f1603quot;,quot;0X0002000040000000000000000000000000324667F777797F7F7D7C64631C000900quot;,quot;0X00000000000000000000006D7F7F7C7D7D7F7F7F7F7F7F7F7F7F7070180006000000000quot;,quot;0X000000010101010000207F7F7F7A3B111437D7F7C3E0A0000000000000000quot;,quot;0x0000000006001F3383A1100000647A7F7F00060000000001000000000001quot;,quot;0X00000102000500030300257A7F7F020000000000000010102000700000quot;,quot;0x0004000100000117F7E05050000000000001010100000100060500000quot;,quot;0x0306317F7C070600000000000000000000000000000000203050000085C7Bquot;,quot;、quot;0x00000000000000000000000000000000080000quot;、quot;050x0000000000000000000000000000000000000000000000000000000000000000000000000707093130703135E57F71F71E69909090300000000000000quot;、quot;0x00000000000000000000quot;、quot;0x0000000000100707F7F7F7F79F7F79F7F78F78FF78F30F78F78F78F7F78F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7 7F74quot;,quot;0x652a001a6277f71774736607f787f5a000000003000b07a797f6c75716quot;、quot;0x7a7d7f772600000a5b7b77790000000000000002527d7f7a7f797e7f62351dquot;、quot;0x00090103001b7f4f0000000000c00003115361585b52601503030000200quot;,quot;0x0000070100000000000050007000600020000000300030000500000000005quot;,quot;0x00000000007000200000C0000040004000500000000010000003000000000quot;,quot;0x0000000000000000000000000000000000000000000000000000quot;,quot;0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000quot;,quot;0x0000000000000000000000000000000000000000000000000000000000quot;]
之后,让我们回到cortex的官方ide混音来推断合同。
在at address中,键入合同地址,然后单击按钮加载合同。(如果没有,请重新编译您的合同)现在单击下拉箭头查看合同中可调用函数的列表,如下所示:
将您的自定义图像输入(上面的大数组)粘贴到setinput中,然后单击按钮在弹出窗口中确认事务。
将您的自定义图像输入(上面可怕的数组)粘贴到setinput中,然后单击按钮在弹出窗口中确认事务。等待交易确认。可能需要一段时间!
**,单击digitrecognitioninfer确认交易。您的最终推断应该以秒为单位存储在currentinferresult中!
希望看到这样的内容:
不要担心前面的0;(最终结果存储在“uint256”之后)。如您所见,模已成功确定图像2。
祝贺 你!现在可以编写、编译、部署和执行AI-dapp。
文章标题:在cortex链上编写、编译、部署和执行“Hello world”Ai DAPP
文章链接:https://www.btchangqing.cn/99723.html
更新时间:2020年09月07日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。