tx · Dt43XLUUf8BCJnkLcq3JC7kCQ4a6N3PTGwv5jeCvkDY2 3N3n75UqB8G1GKmXFr4zPhKCjGcqJPRSuJY: -0.01000000 Waves 2024.03.20 11:57 [3026133] smart account 3N3n75UqB8G1GKmXFr4zPhKCjGcqJPRSuJY > SELF 0.00000000 Waves
{ "type": 13, "id": "Dt43XLUUf8BCJnkLcq3JC7kCQ4a6N3PTGwv5jeCvkDY2", "fee": 1000000, "feeAssetId": null, "timestamp": 1710925050740, "version": 2, "chainId": 84, "sender": "3N3n75UqB8G1GKmXFr4zPhKCjGcqJPRSuJY", "senderPublicKey": "2AWdnJuBMzufXSjTvzVcawBQQhnhF1iXR6QNVgwn33oc", "proofs": [ "5r3Ze6ajut3FYg7orxxoTxwUfLKZFR7FwCegLni1fgP1zJ82pRSXodbKuUDXvPuVAesBuiWMgpFCrZLZeAGsUo3X" ], "script": "base64:AAIFAAAAAAAAAAgIAhIECgIBAQAAAAgAAAAADWxheWVyMVdlaWdodHMJAARMAAAAAgkABEwAAAACAAAAAAAASAnZCQAETAAAAAIA//////+zrIUFAAAAA25pbAkABEwAAAACCQAETAAAAAIAAAAAAABfA54JAARMAAAAAgD//////58MgwUAAAADbmlsBQAAAANuaWwAAAAADGxheWVyMUJpYXNlcwkABEwAAAACAP//////2YbeCQAETAAAAAIAAAAAAAAzuDoFAAAAA25pbAAAAAANbGF5ZXIyV2VpZ2h0cwkABEwAAAACCQAETAAAAAIAAAAAAAB7v3AJAARMAAAAAgD//////4ylsAUAAAADbmlsBQAAAANuaWwAAAAADGxheWVyMkJpYXNlcwkABEwAAAACAAAAAAAANUR+BQAAAANuaWwBAAAAB3NpZ21vaWQAAAABAAAAAXoEAAAAAWUAAAAAAAApekkEAAAABGJhc2UAAAAAAAAPQkAEAAAACW5lZ2F0aXZlWgkAAGgAAAACAP//////////BQAAAAF6BAAAAAdleHBQYXJ0CQAAawAAAAMFAAAAAWUFAAAACW5lZ2F0aXZlWgUAAAAEYmFzZQkAAGsAAAADBQAAAARiYXNlBQAAAARiYXNlCQAAZAAAAAIFAAAABGJhc2UFAAAAB2V4cFBhcnQBAAAACmRvdFByb2R1Y3QAAAACAAAAAWEAAAABYgQAAAAIcHJvZHVjdDAJAABrAAAAAwkAAZEAAAACBQAAAAFhAAAAAAAAAAAACQABkQAAAAIFAAAAAWIAAAAAAAAAAAAAAAAAAAAPQkAEAAAACHByb2R1Y3QxCQAAawAAAAMJAAGRAAAAAgUAAAABYQAAAAAAAAAAAQkAAZEAAAACBQAAAAFiAAAAAAAAAAABAAAAAAAAD0JACQAAZAAAAAIFAAAACHByb2R1Y3QwBQAAAAhwcm9kdWN0MQEAAAALZm9yd2FyZFBhc3MAAAADAAAABWlucHV0AAAAB3dlaWdodHMAAAAGYmlhc2VzBAAAAARzdW0wCQAAZAAAAAIJAQAAAApkb3RQcm9kdWN0AAAAAgUAAAAFaW5wdXQJAAGRAAAAAgUAAAAHd2VpZ2h0cwAAAAAAAAAAAAkAAZEAAAACBQAAAAZiaWFzZXMAAAAAAAAAAAAEAAAABHN1bTEJAABkAAAAAgkBAAAACmRvdFByb2R1Y3QAAAACBQAAAAVpbnB1dAkAAZEAAAACBQAAAAd3ZWlnaHRzAAAAAAAAAAABCQABkQAAAAIFAAAABmJpYXNlcwAAAAAAAAAAAQQAAAAEc2lnMAkBAAAAB3NpZ21vaWQAAAABBQAAAARzdW0wBAAAAARzaWcxCQEAAAAHc2lnbW9pZAAAAAEFAAAABHN1bTEJAARMAAAAAgUAAAAEc2lnMAkABEwAAAACBQAAAARzaWcxCQAETAAAAAIFAAAABHN1bTAJAARMAAAAAgUAAAAEc3VtMQUAAAADbmlsAQAAABB4b3JOZXVyYWxOZXR3b3JrAAAAAgAAAAZpbnB1dDEAAAAGaW5wdXQyBAAAAAVpbnB1dAkABEwAAAACBQAAAAZpbnB1dDEJAARMAAAAAgUAAAAGaW5wdXQyBQAAAANuaWwEAAAAEWhpZGRlbkxheWVyT3V0cHV0CQEAAAALZm9yd2FyZFBhc3MAAAADBQAAAAVpbnB1dAUAAAANbGF5ZXIxV2VpZ2h0cwUAAAAMbGF5ZXIxQmlhc2VzBAAAAA5vdXRwdXRMYXllclN1bQkAAGQAAAACCQEAAAAKZG90UHJvZHVjdAAAAAIJAARMAAAAAgkAAZEAAAACBQAAABFoaWRkZW5MYXllck91dHB1dAAAAAAAAAAAAAkABEwAAAACCQABkQAAAAIFAAAAEWhpZGRlbkxheWVyT3V0cHV0AAAAAAAAAAABBQAAAANuaWwJAAGRAAAAAgUAAAANbGF5ZXIyV2VpZ2h0cwAAAAAAAAAAAAkAAZEAAAACBQAAAAxsYXllcjJCaWFzZXMAAAAAAAAAAAAEAAAABm91dHB1dAkBAAAAB3NpZ21vaWQAAAABBQAAAA5vdXRwdXRMYXllclN1bQkABEwAAAACBQAAAAZvdXRwdXQJAARMAAAAAgUAAAAOb3V0cHV0TGF5ZXJTdW0JAARMAAAAAgkAAZEAAAACBQAAABFoaWRkZW5MYXllck91dHB1dAAAAAAAAAAAAgkABEwAAAACCQABkQAAAAIFAAAAEWhpZGRlbkxheWVyT3V0cHV0AAAAAAAAAAADBQAAAANuaWwAAAABAAAAAWkBAAAAB3ByZWRpY3QAAAACAAAABmlucHV0MQAAAAZpbnB1dDIEAAAADHNjYWxlZElucHV0MQMJAAAAAAAAAgUAAAAGaW5wdXQxAAAAAAAAAAABAAAAAAAAD0JAAAAAAAAAAAAABAAAAAxzY2FsZWRJbnB1dDIDCQAAAAAAAAIFAAAABmlucHV0MgAAAAAAAAAAAQAAAAAAAA9CQAAAAAAAAAAAAAQAAAAObmV0d29ya091dHB1dHMJAQAAABB4b3JOZXVyYWxOZXR3b3JrAAAAAgUAAAAMc2NhbGVkSW5wdXQxBQAAAAxzY2FsZWRJbnB1dDIEAAAABnJlc3VsdAkAAZEAAAACBQAAAA5uZXR3b3JrT3V0cHV0cwAAAAAAAAAAAAQAAAAOb3V0cHV0TGF5ZXJTdW0JAAGRAAAAAgUAAAAObmV0d29ya091dHB1dHMAAAAAAAAAAAEEAAAAFWhpZGRlbkxheWVyT3V0cHV0MVN1bQkAAZEAAAACBQAAAA5uZXR3b3JrT3V0cHV0cwAAAAAAAAAAAgQAAAAVaGlkZGVuTGF5ZXJPdXRwdXQyU3VtCQABkQAAAAIFAAAADm5ldHdvcmtPdXRwdXRzAAAAAAAAAAADCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAZyZXN1bHQFAAAABnJlc3VsdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAOb3V0cHV0TGF5ZXJTdW0FAAAADm91dHB1dExheWVyU3VtCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABVoaWRkZW5MYXllck91dHB1dDFTdW0FAAAAFWhpZGRlbkxheWVyT3V0cHV0MVN1bQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAVaGlkZGVuTGF5ZXJPdXRwdXQyU3VtBQAAABVoaWRkZW5MYXllck91dHB1dDJTdW0FAAAAA25pbAAAAAAGTmKc", "height": 3026133, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DrftWca7J6bqUwVfecQjir8mFkKk6zDrPUzysY89nBUr Next: FPJLJBHCFpWbureEe13BzNSfQbZFGFP6nVQzTvxGcaVB Diff:
Old | New | Differences | |
---|---|---|---|
30 | 30 | let sum1 = (dotProduct(input, weights[1]) + biases[1]) | |
31 | 31 | let sig0 = sigmoid(sum0) | |
32 | 32 | let sig1 = sigmoid(sum1) | |
33 | - | [sig0, sig1] | |
33 | + | [sig0, sig1, sum0, sum1] | |
34 | 34 | } | |
35 | 35 | ||
36 | 36 | ||
37 | 37 | func xorNeuralNetwork (input1,input2) = { | |
38 | 38 | let input = [input1, input2] | |
39 | 39 | let hiddenLayerOutput = forwardPass(input, layer1Weights, layer1Biases) | |
40 | - | let outputLayerSum = (dotProduct(hiddenLayerOutput, layer2Weights[0]) + layer2Biases[0]) | |
40 | + | let outputLayerSum = (dotProduct([hiddenLayerOutput[0], hiddenLayerOutput[1]], layer2Weights[0]) + layer2Biases[0]) | |
41 | 41 | let output = sigmoid(outputLayerSum) | |
42 | - | [ | |
42 | + | [output, outputLayerSum, hiddenLayerOutput[2], hiddenLayerOutput[3]] | |
43 | 43 | } | |
44 | 44 | ||
45 | 45 | ||
51 | 51 | let scaledInput2 = if ((input2 == 1)) | |
52 | 52 | then 1000000 | |
53 | 53 | else 0 | |
54 | - | xorNeuralNetwork(scaledInput1, scaledInput2) | |
54 | + | let networkOutputs = xorNeuralNetwork(scaledInput1, scaledInput2) | |
55 | + | let result = networkOutputs[0] | |
56 | + | let outputLayerSum = networkOutputs[1] | |
57 | + | let hiddenLayerOutput1Sum = networkOutputs[2] | |
58 | + | let hiddenLayerOutput2Sum = networkOutputs[3] | |
59 | + | [IntegerEntry("result", result), IntegerEntry("outputLayerSum", outputLayerSum), IntegerEntry("hiddenLayerOutput1Sum", hiddenLayerOutput1Sum), IntegerEntry("hiddenLayerOutput2Sum", hiddenLayerOutput2Sum)] | |
55 | 60 | } | |
56 | 61 | ||
57 | 62 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let layer1Weights = [[4721113, -5002107], [6226846, -6353789]] | |
5 | 5 | ||
6 | 6 | let layer1Biases = [-2521378, 3389498] | |
7 | 7 | ||
8 | 8 | let layer2Weights = [[8109936, -7559760]] | |
9 | 9 | ||
10 | 10 | let layer2Biases = [3490942] | |
11 | 11 | ||
12 | 12 | func sigmoid (z) = { | |
13 | 13 | let e = 2718281 | |
14 | 14 | let base = 1000000 | |
15 | 15 | let negativeZ = (-1 * z) | |
16 | 16 | let expPart = fraction(e, negativeZ, base) | |
17 | 17 | fraction(base, base, (base + expPart)) | |
18 | 18 | } | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | func dotProduct (a,b) = { | |
22 | 22 | let product0 = fraction(a[0], b[0], 1000000) | |
23 | 23 | let product1 = fraction(a[1], b[1], 1000000) | |
24 | 24 | (product0 + product1) | |
25 | 25 | } | |
26 | 26 | ||
27 | 27 | ||
28 | 28 | func forwardPass (input,weights,biases) = { | |
29 | 29 | let sum0 = (dotProduct(input, weights[0]) + biases[0]) | |
30 | 30 | let sum1 = (dotProduct(input, weights[1]) + biases[1]) | |
31 | 31 | let sig0 = sigmoid(sum0) | |
32 | 32 | let sig1 = sigmoid(sum1) | |
33 | - | [sig0, sig1] | |
33 | + | [sig0, sig1, sum0, sum1] | |
34 | 34 | } | |
35 | 35 | ||
36 | 36 | ||
37 | 37 | func xorNeuralNetwork (input1,input2) = { | |
38 | 38 | let input = [input1, input2] | |
39 | 39 | let hiddenLayerOutput = forwardPass(input, layer1Weights, layer1Biases) | |
40 | - | let outputLayerSum = (dotProduct(hiddenLayerOutput, layer2Weights[0]) + layer2Biases[0]) | |
40 | + | let outputLayerSum = (dotProduct([hiddenLayerOutput[0], hiddenLayerOutput[1]], layer2Weights[0]) + layer2Biases[0]) | |
41 | 41 | let output = sigmoid(outputLayerSum) | |
42 | - | [ | |
42 | + | [output, outputLayerSum, hiddenLayerOutput[2], hiddenLayerOutput[3]] | |
43 | 43 | } | |
44 | 44 | ||
45 | 45 | ||
46 | 46 | @Callable(i) | |
47 | 47 | func predict (input1,input2) = { | |
48 | 48 | let scaledInput1 = if ((input1 == 1)) | |
49 | 49 | then 1000000 | |
50 | 50 | else 0 | |
51 | 51 | let scaledInput2 = if ((input2 == 1)) | |
52 | 52 | then 1000000 | |
53 | 53 | else 0 | |
54 | - | xorNeuralNetwork(scaledInput1, scaledInput2) | |
54 | + | let networkOutputs = xorNeuralNetwork(scaledInput1, scaledInput2) | |
55 | + | let result = networkOutputs[0] | |
56 | + | let outputLayerSum = networkOutputs[1] | |
57 | + | let hiddenLayerOutput1Sum = networkOutputs[2] | |
58 | + | let hiddenLayerOutput2Sum = networkOutputs[3] | |
59 | + | [IntegerEntry("result", result), IntegerEntry("outputLayerSum", outputLayerSum), IntegerEntry("hiddenLayerOutput1Sum", hiddenLayerOutput1Sum), IntegerEntry("hiddenLayerOutput2Sum", hiddenLayerOutput2Sum)] | |
55 | 60 | } | |
56 | 61 | ||
57 | 62 |
github/deemru/w8io/6500d08 20.88 ms ◑