tx · 3yXAAVQ7hMyV4mpM7j8V8iJYvsLoYdyi3DGY5qod2bQT 3Moz6HJhucpFh4V3VScXhd9efei4Curytfj: -0.01000000 Waves 2023.10.28 17:42 [2818620] smart account 3Moz6HJhucpFh4V3VScXhd9efei4Curytfj > SELF 0.00000000 Waves
{ "type": 13, "id": "3yXAAVQ7hMyV4mpM7j8V8iJYvsLoYdyi3DGY5qod2bQT", "fee": 1000000, "feeAssetId": null, "timestamp": 1698504164952, "version": 2, "chainId": 84, "sender": "3Moz6HJhucpFh4V3VScXhd9efei4Curytfj", "senderPublicKey": "Ec1VLg3r1E7mwHmaNidmoKrFAUJ55UVJFq3J1YKRy5Zm", "proofs": [ "pC6E8bsVhuGeFs3hA6w4qPcGPH6vc9cNsGEbZKz4tTvMCoYXVWyvzEAxe8CCN2KBiY9imVXZjzU8z4MKxVnz1Tq" ], "script": "base64:BgIHCAISAwoBEQwAB3NwZWNpZXMJAMwIAgILSXJpcy1zZXRvc2EJAMwIAgIPSXJpcy12ZXJzaWNvbG9yCQDMCAICDklyaXMtdmlyZ2luaWNhBQNuaWwAB3dlaWdodDEJAMwIAgkAzAgCAI0wCQDMCAIAhuj/////////AQkAzAgCAMZeCQDMCAIAmYcBBQNuaWwJAMwIAgkAzAgCAKDh/////////wEJAMwIAgD36/////////8BCQDMCAIAgOr/////////AQkAzAgCAIgDBQNuaWwJAMwIAgkAzAgCAOkzCQDMCAIArAIJAMwIAgCrWQkAzAgCAKVbBQNuaWwJAMwIAgkAzAgCALUgCQDMCAIAodn/////////AQkAzAgCAM/n/////////wEJAMwIAgCVBwUDbmlsCQDMCAIJAMwIAgCmMQkAzAgCALq3/////////wEJAMwIAgDERAkAzAgCAIoCBQNuaWwJAMwIAgkAzAgCAPH7/////////wEJAMwIAgDqKwkAzAgCANXo/////////wEJAMwIAgDNnf////////8BBQNuaWwJAMwIAgkAzAgCAMw2CQDMCAIAw9T/////////AQkAzAgCAPlZCQDMCAIA/XIFA25pbAkAzAgCCQDMCAIAgBUJAMwIAgCvLgkAzAgCALi1/////////wEJAMwIAgCIu/////////8BBQNuaWwJAMwIAgkAzAgCAKoSCQDMCAIApDQJAMwIAgCTzv////////8BCQDMCAIArJj/////////AQUDbmlsCQDMCAIJAMwIAgDkFgkAzAgCAPpUCQDMCAIAorH/////////AQkAzAgCAJSp/////////wEFA25pbAkAzAgCCQDMCAIAx+b/////////AQkAzAgCAJqUAQkAzAgCANaU/////////wEJAMwIAgCs7v7///////8BBQNuaWwJAMwIAgkAzAgCAK1TCQDMCAIA7sj/////////AQkAzAgCAL+DAQkAzAgCALuHAQUDbmlsBQNuaWwAB2JpYXNlczEJAMwIAgCR7v////////8BCQDMCAIA0Ob/////////AQkAzAgCAL7V/////////wEJAMwIAgCe4v////////8BCQDMCAIA8xwJAMwIAgDvWwkAzAgCAP/1/////////wEJAMwIAgCGWAkAzAgCAINjCQDMCAIA6F0JAMwIAgCNVAkAzAgCALzv/////////wEFA25pbAAHd2VpZ2h0MgkAzAgCCQDMCAIAvZL/////////AQkAzAgCANb+/////////wEJAMwIAgCYmv////////8BCQDMCAIAiBMJAMwIAgCjpP////////8BCQDMCAIAy2sJAMwIAgCzh/////////8BCQDMCAIAwGMJAMwIAgD0agkAzAgCAPJzCQDMCAIA8Y4BCQDMCAIAnp7/////////AQUDbmlsCQDMCAIJAMwIAgDt+f////////8BCQDMCAIAjQQJAMwIAgDW1P////////8BCQDMCAIA5P//////////AQkAzAgCAMIdCQDMCAIA0nIJAMwIAgDKAgkAzAgCAMJ4CQDMCAIAs2sJAMwIAgCXTgkAzAgCAKja/v///////wEJAMwIAgDRAwUDbmlsCQDMCAIJAMwIAgChMAkAzAgCAMUICQDMCAIAsEsJAMwIAgChDgkAzAgCALcKCQDMCAIAg97+////////AQkAzAgCAMY1CQDMCAIA17f+////////AQkAzAgCAJ26/v///////wEJAMwIAgCy8P7///////8BCQDMCAIAoLz/////////AQkAzAgCAKI8BQNuaWwFA25pbAAFYmlhczIJAMwIAgC3MwkAzAgCAMgyCQDMCAIAjNz/////////AQUDbmlsAQRyZWx1AQF4AwkAZgIFAXgAAAUBeAAAAQRjYWxjAwVpbnB1dAZ3ZWlnaHQEYmlhcwQEY2FsYwkAZAIJAGQCCQBkAgkAZAIJAGgCCQCRAwIFBWlucHV0AAAJAJEDAgUGd2VpZ2h0AAAJAGgCCQCRAwIFBWlucHV0AAEJAJEDAgUGd2VpZ2h0AAEJAGgCCQCRAwIFBWlucHV0AAIJAJEDAgUGd2VpZ2h0AAIJAGgCCQCRAwIFBWlucHV0AAMJAJEDAgUGd2VpZ2h0AAMFBGJpYXMFBGNhbGMBEWNhbGNfc2Vjb25kX2xheWVyAwVpbnB1dAZ3ZWlnaHQEYmlhcwQLY2FsY19zZWNvbmQJAGQCCQBkAgkAZAIJAGQCCQBkAgkAZAIJAGQCCQBkAgkAZAIJAGQCCQBkAgkAZAIJAGgCCQCRAwIFBWlucHV0AAAJAJEDAgUGd2VpZ2h0AAAJAGgCCQCRAwIFBWlucHV0AAEJAJEDAgUGd2VpZ2h0AAEJAGgCCQCRAwIFBWlucHV0AAIJAJEDAgUGd2VpZ2h0AAIJAGgCCQCRAwIFBWlucHV0AAMJAJEDAgUGd2VpZ2h0AAMJAGgCCQCRAwIFBWlucHV0AAQJAJEDAgUGd2VpZ2h0AAQJAGgCCQCRAwIFBWlucHV0AAUJAJEDAgUGd2VpZ2h0AAUJAGgCCQCRAwIFBWlucHV0AAYJAJEDAgUGd2VpZ2h0AAYJAGgCCQCRAwIFBWlucHV0AAcJAJEDAgUGd2VpZ2h0AAcJAGgCCQCRAwIFBWlucHV0AAgJAJEDAgUGd2VpZ2h0AAgJAGgCCQCRAwIFBWlucHV0AAkJAJEDAgUGd2VpZ2h0AAkJAGgCCQCRAwIFBWlucHV0AAoJAJEDAgUGd2VpZ2h0AAoJAGgCCQCRAwIFBWlucHV0AAsJAJEDAgUGd2VpZ2h0AAsFBGJpYXMFC2NhbGNfc2Vjb25kARNjYWxjdWxhdGVGaXJzdExheWVyAQVpbnB1dAQMb3VwdXRfbGF5ZXIxCQEEcmVsdQEJAQRjYWxjAwUFaW5wdXQJAJEDAgUHd2VpZ2h0MQAACQCRAwIFB2JpYXNlczEAAAQMb3VwdXRfbGF5ZXIyCQEEcmVsdQEJAQRjYWxjAwUFaW5wdXQJAJEDAgUHd2VpZ2h0MQABCQCRAwIFB2JpYXNlczEAAQQMb3VwdXRfbGF5ZXIzCQEEcmVsdQEJAQRjYWxjAwUFaW5wdXQJAJEDAgUHd2VpZ2h0MQACCQCRAwIFB2JpYXNlczEAAgQMb3VwdXRfbGF5ZXI0CQEEcmVsdQEJAQRjYWxjAwUFaW5wdXQJAJEDAgUHd2VpZ2h0MQADCQCRAwIFB2JpYXNlczEAAwQMb3VwdXRfbGF5ZXI1CQEEcmVsdQEJAQRjYWxjAwUFaW5wdXQJAJEDAgUHd2VpZ2h0MQAECQCRAwIFB2JpYXNlczEABAQMb3VwdXRfbGF5ZXI2CQEEcmVsdQEJAQRjYWxjAwUFaW5wdXQJAJEDAgUHd2VpZ2h0MQAFCQCRAwIFB2JpYXNlczEABQQMb3VwdXRfbGF5ZXI3CQEEcmVsdQEJAQRjYWxjAwUFaW5wdXQJAJEDAgUHd2VpZ2h0MQAGCQCRAwIFB2JpYXNlczEABgQMb3VwdXRfbGF5ZXI4CQEEcmVsdQEJAQRjYWxjAwUFaW5wdXQJAJEDAgUHd2VpZ2h0MQAHCQCRAwIFB2JpYXNlczEABwQMb3VwdXRfbGF5ZXI5CQEEcmVsdQEJAQRjYWxjAwUFaW5wdXQJAJEDAgUHd2VpZ2h0MQAICQCRAwIFB2JpYXNlczEACAQNb3VwdXRfbGF5ZXIxMAkBBHJlbHUBCQEEY2FsYwMFBWlucHV0CQCRAwIFB3dlaWdodDEACQkAkQMCBQdiaWFzZXMxAAkEDW91cHV0X2xheWVyMTEJAQRyZWx1AQkBBGNhbGMDBQVpbnB1dAkAkQMCBQd3ZWlnaHQxAAoJAJEDAgUHYmlhc2VzMQAKBA1vdXB1dF9sYXllcjEyCQEEcmVsdQEJAQRjYWxjAwUFaW5wdXQJAJEDAgUHd2VpZ2h0MQALCQCRAwIFB2JpYXNlczEACwkAzAgCBQxvdXB1dF9sYXllcjEJAMwIAgUMb3VwdXRfbGF5ZXIyCQDMCAIFDG91cHV0X2xheWVyMwkAzAgCBQxvdXB1dF9sYXllcjQJAMwIAgUMb3VwdXRfbGF5ZXI1CQDMCAIFDG91cHV0X2xheWVyNgkAzAgCBQxvdXB1dF9sYXllcjcJAMwIAgUMb3VwdXRfbGF5ZXI4CQDMCAIFDG91cHV0X2xheWVyOQkAzAgCBQ1vdXB1dF9sYXllcjEwCQDMCAIFDW91cHV0X2xheWVyMTEJAMwIAgUNb3VwdXRfbGF5ZXIxMgUDbmlsARRjYWxjdWxhdGVTZWNvbmRMYXllcgEFaW5wdXQEDW91dHB1dF9sYXllcjEJARFjYWxjX3NlY29uZF9sYXllcgMFBWlucHV0CQCRAwIFB3dlaWdodDIAAAkAkQMCBQViaWFzMgAABA1vdXRwdXRfbGF5ZXIyCQERY2FsY19zZWNvbmRfbGF5ZXIDBQVpbnB1dAkAkQMCBQd3ZWlnaHQyAAEJAJEDAgUFYmlhczIAAQQNb3V0cHV0X2xheWVyMwkBEWNhbGNfc2Vjb25kX2xheWVyAwUFaW5wdXQJAJEDAgUHd2VpZ2h0MgACCQCRAwIFBWJpYXMyAAIJAMwIAgUNb3V0cHV0X2xheWVyMQkAzAgCBQ1vdXRwdXRfbGF5ZXIyCQDMCAIFDW91dHB1dF9sYXllcjMFA25pbAEMZm9yd2FyZF9wcm9wAQVpbnB1dAQLZmlyc3RfbGF5ZXIJARNjYWxjdWxhdGVGaXJzdExheWVyAQUFaW5wdXQEDHNlY29uZF9sYXllcgkBFGNhbGN1bGF0ZVNlY29uZExheWVyAQULZmlyc3RfbGF5ZXIFDHNlY29uZF9sYXllcgEJZmluZF9wcmVkAQZvdXRwdXQEBG1heDEDCQBmAgkAkQMCBQZvdXRwdXQAAAkAkQMCBQZvdXRwdXQAAQAAAAEEBG1heDIDCQBmAgUEbWF4MQkAkQMCBQZvdXRwdXQAAgUEbWF4MQACBQRtYXgyAQFpAQpwcmVkaWN0aW9uAQVpbnB1dAQGb3V0cHV0CQEMZm9yd2FyZF9wcm9wAQUFaW5wdXQEDWNhbGxlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBARwcmVkCQEJZmluZF9wcmVkAQUGb3V0cHV0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDWNhbGxlckFkZHJlc3MCAl8xCQCRAwIFBm91dHB1dAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDWNhbGxlckFkZHJlc3MCAl8yCQCRAwIFBm91dHB1dAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDWNhbGxlckFkZHJlc3MCAl8zCQCRAwIFBm91dHB1dAACCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUNY2FsbGVyQWRkcmVzcwICX3AJAJEDAgUHc3BlY2llcwUEcHJlZAUDbmlsAEJ+v/8=", "height": 2818620, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BKm1fGjneVAZtyFXdKv5eE84qs1rP7eV61jjb4vcD86B Next: 7TxoJfzsmTY4kCjXtwb4Rrio9Vm5m292D5RKdp53fR9B Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let species = ["Iris-setosa", "Iris-versicolor", "Iris-virginica"] | |
5 | + | ||
4 | 6 | let weight1 = [[6157, -3066, 12102, 17305], [-3936, -2569, -2816, 392], [6633, 300, 11435, 11685], [4149, -4959, -3121, 917], [6310, -9286, 8772, 266], [-527, 5610, -2987, -12595], [6988, -5565, 11513, 14717], [2688, 5935, -9544, -8824], [2346, 6692, -6381, -13268], [2916, 10874, -10078, -11116], [-3257, 18970, -13738, -18644], [10669, -7058, 16831, 17339]] | |
5 | 7 | ||
6 | 8 | let biases1 = [-2287, -3248, -5442, -3810, 3699, 11759, -1281, 11270, 12675, 12008, 10765, -2116] | |
58 | 60 | } | |
59 | 61 | ||
60 | 62 | ||
63 | + | func find_pred (output) = { | |
64 | + | let max1 = if ((output[0] > output[1])) | |
65 | + | then 0 | |
66 | + | else 1 | |
67 | + | let max2 = if ((max1 > output[2])) | |
68 | + | then max1 | |
69 | + | else 2 | |
70 | + | max2 | |
71 | + | } | |
72 | + | ||
73 | + | ||
61 | 74 | @Callable(i) | |
62 | 75 | func prediction (input) = { | |
63 | 76 | let output = forward_prop(input) | |
64 | 77 | let callerAddress = toString(i.caller) | |
65 | - | [IntegerEntry((callerAddress + "_1"), output[0]), IntegerEntry((callerAddress + "_2"), output[1]), IntegerEntry((callerAddress + "_3"), output[2])] | |
78 | + | let pred = find_pred(output) | |
79 | + | [IntegerEntry((callerAddress + "_1"), output[0]), IntegerEntry((callerAddress + "_2"), output[1]), IntegerEntry((callerAddress + "_3"), output[2]), StringEntry((callerAddress + "_p"), species[pred])] | |
66 | 80 | } | |
67 | 81 | ||
68 | 82 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let species = ["Iris-setosa", "Iris-versicolor", "Iris-virginica"] | |
5 | + | ||
4 | 6 | let weight1 = [[6157, -3066, 12102, 17305], [-3936, -2569, -2816, 392], [6633, 300, 11435, 11685], [4149, -4959, -3121, 917], [6310, -9286, 8772, 266], [-527, 5610, -2987, -12595], [6988, -5565, 11513, 14717], [2688, 5935, -9544, -8824], [2346, 6692, -6381, -13268], [2916, 10874, -10078, -11116], [-3257, 18970, -13738, -18644], [10669, -7058, 16831, 17339]] | |
5 | 7 | ||
6 | 8 | let biases1 = [-2287, -3248, -5442, -3810, 3699, 11759, -1281, 11270, 12675, 12008, 10765, -2116] | |
7 | 9 | ||
8 | 10 | let weight2 = [[-14019, -170, -13032, 2440, -11741, 13771, -15437, 12736, 13684, 14834, 18289, -12514], [-787, 525, -5546, -28, 3778, 14674, 330, 15426, 13747, 10007, -21208, 465], [6177, 1093, 9648, 1825, 1335, -20733, 6854, -25641, -25315, -18382, -8672, 7714]] | |
9 | 11 | ||
10 | 12 | let bias2 = [6583, 6472, -4596] | |
11 | 13 | ||
12 | 14 | func relu (x) = if ((x > 0)) | |
13 | 15 | then x | |
14 | 16 | else 0 | |
15 | 17 | ||
16 | 18 | ||
17 | 19 | func calc (input,weight,bias) = { | |
18 | 20 | let calc = (((((input[0] * weight[0]) + (input[1] * weight[1])) + (input[2] * weight[2])) + (input[3] * weight[3])) + bias) | |
19 | 21 | calc | |
20 | 22 | } | |
21 | 23 | ||
22 | 24 | ||
23 | 25 | func calc_second_layer (input,weight,bias) = { | |
24 | 26 | let calc_second = (((((((((((((input[0] * weight[0]) + (input[1] * weight[1])) + (input[2] * weight[2])) + (input[3] * weight[3])) + (input[4] * weight[4])) + (input[5] * weight[5])) + (input[6] * weight[6])) + (input[7] * weight[7])) + (input[8] * weight[8])) + (input[9] * weight[9])) + (input[10] * weight[10])) + (input[11] * weight[11])) + bias) | |
25 | 27 | calc_second | |
26 | 28 | } | |
27 | 29 | ||
28 | 30 | ||
29 | 31 | func calculateFirstLayer (input) = { | |
30 | 32 | let ouput_layer1 = relu(calc(input, weight1[0], biases1[0])) | |
31 | 33 | let ouput_layer2 = relu(calc(input, weight1[1], biases1[1])) | |
32 | 34 | let ouput_layer3 = relu(calc(input, weight1[2], biases1[2])) | |
33 | 35 | let ouput_layer4 = relu(calc(input, weight1[3], biases1[3])) | |
34 | 36 | let ouput_layer5 = relu(calc(input, weight1[4], biases1[4])) | |
35 | 37 | let ouput_layer6 = relu(calc(input, weight1[5], biases1[5])) | |
36 | 38 | let ouput_layer7 = relu(calc(input, weight1[6], biases1[6])) | |
37 | 39 | let ouput_layer8 = relu(calc(input, weight1[7], biases1[7])) | |
38 | 40 | let ouput_layer9 = relu(calc(input, weight1[8], biases1[8])) | |
39 | 41 | let ouput_layer10 = relu(calc(input, weight1[9], biases1[9])) | |
40 | 42 | let ouput_layer11 = relu(calc(input, weight1[10], biases1[10])) | |
41 | 43 | let ouput_layer12 = relu(calc(input, weight1[11], biases1[11])) | |
42 | 44 | [ouput_layer1, ouput_layer2, ouput_layer3, ouput_layer4, ouput_layer5, ouput_layer6, ouput_layer7, ouput_layer8, ouput_layer9, ouput_layer10, ouput_layer11, ouput_layer12] | |
43 | 45 | } | |
44 | 46 | ||
45 | 47 | ||
46 | 48 | func calculateSecondLayer (input) = { | |
47 | 49 | let output_layer1 = calc_second_layer(input, weight2[0], bias2[0]) | |
48 | 50 | let output_layer2 = calc_second_layer(input, weight2[1], bias2[1]) | |
49 | 51 | let output_layer3 = calc_second_layer(input, weight2[2], bias2[2]) | |
50 | 52 | [output_layer1, output_layer2, output_layer3] | |
51 | 53 | } | |
52 | 54 | ||
53 | 55 | ||
54 | 56 | func forward_prop (input) = { | |
55 | 57 | let first_layer = calculateFirstLayer(input) | |
56 | 58 | let second_layer = calculateSecondLayer(first_layer) | |
57 | 59 | second_layer | |
58 | 60 | } | |
59 | 61 | ||
60 | 62 | ||
63 | + | func find_pred (output) = { | |
64 | + | let max1 = if ((output[0] > output[1])) | |
65 | + | then 0 | |
66 | + | else 1 | |
67 | + | let max2 = if ((max1 > output[2])) | |
68 | + | then max1 | |
69 | + | else 2 | |
70 | + | max2 | |
71 | + | } | |
72 | + | ||
73 | + | ||
61 | 74 | @Callable(i) | |
62 | 75 | func prediction (input) = { | |
63 | 76 | let output = forward_prop(input) | |
64 | 77 | let callerAddress = toString(i.caller) | |
65 | - | [IntegerEntry((callerAddress + "_1"), output[0]), IntegerEntry((callerAddress + "_2"), output[1]), IntegerEntry((callerAddress + "_3"), output[2])] | |
78 | + | let pred = find_pred(output) | |
79 | + | [IntegerEntry((callerAddress + "_1"), output[0]), IntegerEntry((callerAddress + "_2"), output[1]), IntegerEntry((callerAddress + "_3"), output[2]), StringEntry((callerAddress + "_p"), species[pred])] | |
66 | 80 | } | |
67 | 81 | ||
68 | 82 |
github/deemru/w8io/3ef1775 43.02 ms ◑