tx · EPzQDj6V1WSZyt31d5JN4yQdfxqisDnUmXHEcK9HZnRU 3N3n75UqB8G1GKmXFr4zPhKCjGcqJPRSuJY: -0.01000000 Waves 2024.05.24 17:48 [3120229] smart account 3N3n75UqB8G1GKmXFr4zPhKCjGcqJPRSuJY > SELF 0.00000000 Waves
{ "type": 13, "id": "EPzQDj6V1WSZyt31d5JN4yQdfxqisDnUmXHEcK9HZnRU", "fee": 1000000, "feeAssetId": null, "timestamp": 1716562138680, "version": 2, "chainId": 84, "sender": "3N3n75UqB8G1GKmXFr4zPhKCjGcqJPRSuJY", "senderPublicKey": "2AWdnJuBMzufXSjTvzVcawBQQhnhF1iXR6QNVgwn33oc", "proofs": [ "2AcwcJTf1aoUBeYJ8D81KngcwnszXFYx3TAUziSW4nq86rSh7yLu1SVdexFYNDTZJU8tjsauB4aEGgjqoJBgi8UV" ], "script": "base64:BwIICAISBAoCAQEHAA93ZWlnaHRzX2xheWVyXzEJAMwIAgkAzAgCAJLVAwkAzAgCAKnVAwUDbmlsCQDMCAIJAMwIAgDMwwIJAMwIAgDRwwIFA25pbAUDbmlsAA5iaWFzZXNfbGF5ZXJfMQkAzAgCAM+1/v///////wEJAMwIAgC0j/z///////8BBQNuaWwAD3dlaWdodHNfbGF5ZXJfMgkAzAgCCQDMCAIA4YoFCQDMCAIAjsP6////////AQUDbmlsBQNuaWwADmJpYXNlc19sYXllcl8yCQDMCAIAmtb9////////AQUDbmlsAQ5saW5lYXJfZm9yd2FyZAMFaW5wdXQHd2VpZ2h0cwZiaWFzZXMEDXdlaWdodGVkX3N1bTEJAGQCCQBpAgkAZAIJAGgCCQCRAwIFBWlucHV0AAAJAJEDAgkAkQMCBQd3ZWlnaHRzAAAAAAkAaAIJAJEDAgUFaW5wdXQAAQkAkQMCCQCRAwIFB3dlaWdodHMAAAABAJBOCQCRAwIFBmJpYXNlcwAABA13ZWlnaHRlZF9zdW0yCQBkAgkAaQIJAGQCCQBoAgkAkQMCBQVpbnB1dAAACQCRAwIJAJEDAgUHd2VpZ2h0cwABAAAJAGgCCQCRAwIFBWlucHV0AAEJAJEDAgkAkQMCBQd3ZWlnaHRzAAEAAQCQTgkAkQMCBQZiaWFzZXMAAQkAzAgCBQ13ZWlnaHRlZF9zdW0xCQDMCAIFDXdlaWdodGVkX3N1bTIFA25pbAEEcmVsdQEFaW5wdXQEBG91dDEDCQBmAgkAkQMCBQVpbnB1dAAAAAAJAJEDAgUFaW5wdXQAAAAABARvdXQyAwkAZgIJAJEDAgUFaW5wdXQAAQAACQCRAwIFBWlucHV0AAEAAAkAzAgCBQRvdXQxCQDMCAIFBG91dDIFA25pbAEHc2lnbW9pZAEFaW5wdXQDCQBmAgDwsf////////8BBQVpbnB1dAAAAwkAZgIFBWlucHV0AJBOAJBOCQBkAgCIJwkAaQIFBWlucHV0AAIBAWkBB3ByZWRpY3QCAngxAngyBAZpbnB1dHMJAMwIAgkAaAIFAngxAJBOCQDMCAIJAGgCBQJ4MgCQTgUDbmlsBAJ6MQkBDmxpbmVhcl9mb3J3YXJkAwUGaW5wdXRzBQ93ZWlnaHRzX2xheWVyXzEFDmJpYXNlc19sYXllcl8xBAJhMQkBBHJlbHUBBQJ6MQQKZGVidWdfejFfMQkBDEludGVnZXJFbnRyeQICCmRlYnVnX3oxXzEJAJEDAgUCejEAAAQKZGVidWdfejFfMgkBDEludGVnZXJFbnRyeQICCmRlYnVnX3oxXzIJAJEDAgUCejEAAQQKZGVidWdfYTFfMQkBDEludGVnZXJFbnRyeQICCmRlYnVnX2ExXzEJAJEDAgUCYTEAAAQKZGVidWdfYTFfMgkBDEludGVnZXJFbnRyeQICCmRlYnVnX2ExXzIJAJEDAgUCYTEAAQQCejIJAGQCCQBpAgkAZAIJAGgCCQCRAwIFAmExAAAJAJEDAgkAkQMCBQ93ZWlnaHRzX2xheWVyXzIAAAAACQBoAgkAkQMCBQJhMQABCQCRAwIJAJEDAgUPd2VpZ2h0c19sYXllcl8yAAAAAQCQTgkAkQMCBQ5iaWFzZXNfbGF5ZXJfMgAABAJhMgkBB3NpZ21vaWQBBQJ6MgQGcmVzdWx0CQBpAgUCYTIAkE4ECGRlYnVnX3oyCQEMSW50ZWdlckVudHJ5AgIIZGVidWdfejIFAnoyBAhkZWJ1Z19hMgkBDEludGVnZXJFbnRyeQICCGRlYnVnX2EyBQJhMgQMZGVidWdfcmVzdWx0CQEMSW50ZWdlckVudHJ5AgIMZGVidWdfcmVzdWx0BQZyZXN1bHQJAJQKAgkAzAgCBQpkZWJ1Z196MV8xCQDMCAIFCmRlYnVnX3oxXzIJAMwIAgUKZGVidWdfYTFfMQkAzAgCBQpkZWJ1Z19hMV8yCQDMCAIFCGRlYnVnX3oyCQDMCAIFCGRlYnVnX2EyCQDMCAIFDGRlYnVnX3Jlc3VsdAUDbmlsBQZyZXN1bHQAkkLlxA==", "height": 3120229, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9o2vqzbv5JjJKboqkHfGhnn2XCjoXwLe8EaH4ffdKaSu Next: 5iNUFVUiuLxLyD9zsZtxLmY1BS5THCkkmFMT6kNw969S Full:
Old | New | Differences | |
---|---|---|---|
1 | - | {-# STDLIB_VERSION | |
1 | + | {-# STDLIB_VERSION 7 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let | |
4 | + | let weights_layer_1 = [[60050, 60073], [41420, 41425]] | |
5 | 5 | ||
6 | - | let | |
6 | + | let biases_layer_1 = [-25905, -63564] | |
7 | 7 | ||
8 | - | let | |
8 | + | let weights_layer_2 = [[83297, -89714]] | |
9 | 9 | ||
10 | - | let | |
10 | + | let biases_layer_2 = [-38118] | |
11 | 11 | ||
12 | - | func relu (x) = if ((x > 0)) | |
13 | - | then x | |
14 | - | else 0 | |
15 | - | ||
16 | - | ||
17 | - | func sigmoid_approx (x) = if ((-4000 > x)) | |
18 | - | then 0 | |
19 | - | else if ((-2000 > x)) | |
20 | - | then 1000 | |
21 | - | else if ((-1000 > x)) | |
22 | - | then 2000 | |
23 | - | else if ((0 > x)) | |
24 | - | then 3000 | |
25 | - | else if ((1000 > x)) | |
26 | - | then 5000 | |
27 | - | else if ((2000 > x)) | |
28 | - | then 7000 | |
29 | - | else if ((3000 > x)) | |
30 | - | then 8000 | |
31 | - | else if ((4000 > x)) | |
32 | - | then 9000 | |
33 | - | else 10000 | |
34 | - | ||
35 | - | ||
36 | - | func dotProduct (v1,v2) = (((v1[0] * v2[0]) + (v1[1] * v2[1])) / 10000) | |
37 | - | ||
38 | - | ||
39 | - | func feedforward (inputs) = { | |
40 | - | let dp1 = (dotProduct(inputs, layer1Weights[0]) + layer1Biases[0]) | |
41 | - | let dp2 = (dotProduct(inputs, layer1Weights[1]) + layer1Biases[1]) | |
42 | - | let dp3 = (dotProduct(inputs, layer1Weights[2]) + layer1Biases[2]) | |
43 | - | let dp4 = (dotProduct(inputs, layer1Weights[3]) + layer1Biases[3]) | |
44 | - | let layer1Results = [relu(dp1), relu(dp2), relu(dp3), relu(dp4)] | |
45 | - | let dpLayer2 = (dotProduct(layer1Results, layer2Weights[0]) + layer2Biases[0]) | |
46 | - | let output = sigmoid_approx(dpLayer2) | |
47 | - | $Tuple6(output, dp1, dp2, dp3, dp4, dpLayer2) | |
12 | + | func linear_forward (input,weights,biases) = { | |
13 | + | let weighted_sum1 = ((((input[0] * weights[0][0]) + (input[1] * weights[0][1])) / 10000) + biases[0]) | |
14 | + | let weighted_sum2 = ((((input[0] * weights[1][0]) + (input[1] * weights[1][1])) / 10000) + biases[1]) | |
15 | + | [weighted_sum1, weighted_sum2] | |
48 | 16 | } | |
49 | 17 | ||
50 | 18 | ||
19 | + | func relu (input) = { | |
20 | + | let out1 = if ((input[0] > 0)) | |
21 | + | then input[0] | |
22 | + | else 0 | |
23 | + | let out2 = if ((input[1] > 0)) | |
24 | + | then input[1] | |
25 | + | else 0 | |
26 | + | [out1, out2] | |
27 | + | } | |
28 | + | ||
29 | + | ||
30 | + | func sigmoid (input) = if ((-10000 > input)) | |
31 | + | then 0 | |
32 | + | else if ((input > 10000)) | |
33 | + | then 10000 | |
34 | + | else (5000 + (input / 2)) | |
35 | + | ||
36 | + | ||
51 | 37 | @Callable(i) | |
52 | - | func predict (input1,input2) = { | |
53 | - | let inputs = [input1, input2] | |
54 | - | let $t015731641 = feedforward(inputs) | |
55 | - | let prediction = $t015731641._1 | |
56 | - | let dp1 = $t015731641._2 | |
57 | - | let dp2 = $t015731641._3 | |
58 | - | let dp3 = $t015731641._4 | |
59 | - | let dp4 = $t015731641._5 | |
60 | - | let dpLayer2 = $t015731641._6 | |
61 | - | [IntegerEntry("prediction", prediction), IntegerEntry("dotProduct1", dp1), IntegerEntry("dotProduct2", dp2), IntegerEntry("dotProduct3", dp3), IntegerEntry("dotProduct4", dp4), IntegerEntry("dotProductLayer2", dpLayer2)] | |
38 | + | func predict (x1,x2) = { | |
39 | + | let inputs = [(x1 * 10000), (x2 * 10000)] | |
40 | + | let z1 = linear_forward(inputs, weights_layer_1, biases_layer_1) | |
41 | + | let a1 = relu(z1) | |
42 | + | let debug_z1_1 = IntegerEntry("debug_z1_1", z1[0]) | |
43 | + | let debug_z1_2 = IntegerEntry("debug_z1_2", z1[1]) | |
44 | + | let debug_a1_1 = IntegerEntry("debug_a1_1", a1[0]) | |
45 | + | let debug_a1_2 = IntegerEntry("debug_a1_2", a1[1]) | |
46 | + | let z2 = ((((a1[0] * weights_layer_2[0][0]) + (a1[1] * weights_layer_2[0][1])) / 10000) + biases_layer_2[0]) | |
47 | + | let a2 = sigmoid(z2) | |
48 | + | let result = (a2 / 10000) | |
49 | + | let debug_z2 = IntegerEntry("debug_z2", z2) | |
50 | + | let debug_a2 = IntegerEntry("debug_a2", a2) | |
51 | + | let debug_result = IntegerEntry("debug_result", result) | |
52 | + | $Tuple2([debug_z1_1, debug_z1_2, debug_a1_1, debug_a1_2, debug_z2, debug_a2, debug_result], result) | |
62 | 53 | } | |
63 | 54 | ||
64 | 55 |
github/deemru/w8io/c3f4982 38.32 ms ◑