tx · 4kvCRNuM7vDGJzNvHyybgikCvkVLpNaQg79JDe7vdHvY 3N3n75UqB8G1GKmXFr4zPhKCjGcqJPRSuJY: -0.01000000 Waves 2024.03.20 11:02 [3026084] smart account 3N3n75UqB8G1GKmXFr4zPhKCjGcqJPRSuJY > SELF 0.00000000 Waves
{ "type": 13, "id": "4kvCRNuM7vDGJzNvHyybgikCvkVLpNaQg79JDe7vdHvY", "fee": 1000000, "feeAssetId": null, "timestamp": 1710921742139, "version": 2, "chainId": 84, "sender": "3N3n75UqB8G1GKmXFr4zPhKCjGcqJPRSuJY", "senderPublicKey": "2AWdnJuBMzufXSjTvzVcawBQQhnhF1iXR6QNVgwn33oc", "proofs": [ "5EKGViadaf8ULJMDEcH5mNa8j4iVhAZmTebZ5fG3JhpJQzMjMJwz6FKaBA9Pry4XvHz98PLXqbBy1KjKcEaee3kG" ], "script": "base64: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", "height": 3026084, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 93J7ZQZ4A2gErEDM76v3ufnNkgYrkUokkebJzjty2jH1 Next: BSfEC4cMC8bJB6QuEh7zoz7DZQEW1cv5iLZgKP7bH7Av Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let layer1Weights = [[ | |
4 | + | let layer1Weights = [[4721113, -5002107], [6226846, -6353789]] | |
5 | 5 | ||
6 | - | let layer1Biases = [- | |
6 | + | let layer1Biases = [-2521378, 3389498] | |
7 | 7 | ||
8 | - | let layer2Weights = [[ | |
8 | + | let layer2Weights = [[8109936, -7559760]] | |
9 | 9 | ||
10 | - | let layer2Biases = [ | |
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 | - | fraction(base, | |
17 | + | fraction(base, base, (base + expPart)) | |
18 | 18 | } | |
19 | 19 | ||
20 | 20 | ||
44 | 44 | ||
45 | 45 | ||
46 | 46 | @Callable(i) | |
47 | - | func predict (inputData) = { | |
48 | - | let input1 = if (if ((inputData == 0)) | |
49 | - | then true | |
50 | - | else (inputData == 1)) | |
51 | - | then 0 | |
52 | - | else 1000000 | |
53 | - | let input2 = if (if ((inputData == 0)) | |
54 | - | then true | |
55 | - | else (inputData == 2)) | |
56 | - | then 0 | |
57 | - | else 1000000 | |
58 | - | let result = xorNeuralNetwork(input1, input2) | |
47 | + | func predict (input1,input2) = { | |
48 | + | let scaledInput1 = if ((input1 == 1)) | |
49 | + | then 1000000 | |
50 | + | else 0 | |
51 | + | let scaledInput2 = if ((input2 == 2)) | |
52 | + | then 1000000 | |
53 | + | else 0 | |
54 | + | let result = xorNeuralNetwork(scaledInput1, scaledInput2) | |
59 | 55 | [IntegerEntry("result", result)] | |
60 | 56 | } | |
61 | 57 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let layer1Weights = [[ | |
4 | + | let layer1Weights = [[4721113, -5002107], [6226846, -6353789]] | |
5 | 5 | ||
6 | - | let layer1Biases = [- | |
6 | + | let layer1Biases = [-2521378, 3389498] | |
7 | 7 | ||
8 | - | let layer2Weights = [[ | |
8 | + | let layer2Weights = [[8109936, -7559760]] | |
9 | 9 | ||
10 | - | let layer2Biases = [ | |
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 | - | fraction(base, | |
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 | 33 | [sig0, sig1] | |
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 | 40 | let outputLayerSum = (dotProduct(hiddenLayerOutput, layer2Weights[0]) + layer2Biases[0]) | |
41 | 41 | let output = sigmoid(outputLayerSum) | |
42 | 42 | output | |
43 | 43 | } | |
44 | 44 | ||
45 | 45 | ||
46 | 46 | @Callable(i) | |
47 | - | func predict (inputData) = { | |
48 | - | let input1 = if (if ((inputData == 0)) | |
49 | - | then true | |
50 | - | else (inputData == 1)) | |
51 | - | then 0 | |
52 | - | else 1000000 | |
53 | - | let input2 = if (if ((inputData == 0)) | |
54 | - | then true | |
55 | - | else (inputData == 2)) | |
56 | - | then 0 | |
57 | - | else 1000000 | |
58 | - | let result = xorNeuralNetwork(input1, input2) | |
47 | + | func predict (input1,input2) = { | |
48 | + | let scaledInput1 = if ((input1 == 1)) | |
49 | + | then 1000000 | |
50 | + | else 0 | |
51 | + | let scaledInput2 = if ((input2 == 2)) | |
52 | + | then 1000000 | |
53 | + | else 0 | |
54 | + | let result = xorNeuralNetwork(scaledInput1, scaledInput2) | |
59 | 55 | [IntegerEntry("result", result)] | |
60 | 56 | } | |
61 | 57 | ||
62 | 58 |
github/deemru/w8io/6500d08 26.93 ms ◑