This is an automated email from the ASF dual-hosted git repository.
paulk pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/groovy-website.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 44039c5 minor wording changes
44039c5 is described below
commit 44039c5c46d4572abf7ddc0e221b14fc8a14aea0
Author: Paul King <[email protected]>
AuthorDate: Fri Feb 28 04:51:36 2025 +1000
minor wording changes
---
site/src/site/blog/wayang-tensorflow.adoc | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/site/src/site/blog/wayang-tensorflow.adoc
b/site/src/site/blog/wayang-tensorflow.adoc
index 0322e1c..18e2edd 100644
--- a/site/src/site/blog/wayang-tensorflow.adoc
+++ b/site/src/site/blog/wayang-tensorflow.adoc
@@ -30,7 +30,10 @@ First, we'll define a map of string constants to label
values.
var LABEL_MAP = ["Iris-setosa": 0, "Iris-versicolor": 1, "Iris-virginica": 2]
----
-Now we can define a helper method to convert from our test and training CSV
files into our data types.
+Now we can create a helper method to define the operators we'll use to
+convert from our test and training CSV files into our datasets.
+Operators are the chunks of work that can be allocated to our processing
platform.
+Ultimately, we'll have a graph of operators that form our plan of work.
[source,groovy]
----
@@ -40,8 +43,8 @@ def fileOperation(URI uri, boolean random) {
new Tuple(it[0..-2]*.toFloat() as float[], LABEL_MAP[it[-1]])
}, String, Tuple)
- var mapData = new MapOperator<>(tuple -> (float[]) tuple.field0, Tuple,
float[]) // <3>
- var mapLabel = new MapOperator<>(tuple -> (Integer) tuple.field1, Tuple,
Integer) // <3>
+ var mapData = new MapOperator<>(tuple -> tuple.field0, Tuple, float[]) //
<3>
+ var mapLabel = new MapOperator<>(tuple -> tuple.field1, Tuple, Integer) //
<3>
if (random) {
Random r = new Random()
@@ -60,7 +63,7 @@ def fileOperation(URI uri, boolean random) {
----
<1> `TextFileSource` converts a text file into lines
<2> `line2tupleOp` converts a line into a Tuple containing our `float[]` data
in `field0` and an `Integer` label in `field1`
-<3> We also have `mapData` and `mapLabe` operators for
+<3> We also have `mapData` and `mapLabel` operators for
getting the two parts from our Tuple
<4> We can optionally randomly sort the incoming dataset
@@ -86,7 +89,7 @@ Operator testData = testSource.field0
Operator testLabel = testSource.field1
----
-Next up we'll define a model for our deep-learning network.
+Next up, we'll define a model for our deep-learning network.
Recall that such networks have inputs (the features),
one or more hidden layers, and outputs (in this case, labels).
@@ -97,7 +100,9 @@ The nodes can be activated by linear or non-linear functions.
image:img/deep_node.png[Neural net node,width=600]
We'll have 4 inputs going to 32 hidden nodes to 3 outputs
-with Sigmoid activation.
+with Sigmoid activation. These classes are all platform-agnostic.
+Nowhere here do we mention TensorFlow or use any TensorFlow
+classes.
[source,groovy]
----
@@ -107,8 +112,8 @@ Op l2 = new Linear(32, 3, true).with(s1)
DLModel model = new DLModel(l2)
----
-We define an operator, providing some needed options, that will do
-our training.
+We define a platform-agnostic deep learning training operator,
+providing some needed options, that will do our training.
[source,groovy]
----
@@ -145,7 +150,7 @@ var groundTruth = []
var groundTruthSink = createCollectingSink(groundTruth, Integer)
----
-With operators defined, let's connect them together:
+With operators defined, let's connect them together (define our graph of work):
[source,groovy]
----
@@ -158,7 +163,7 @@ bestFitOp.connectTo(0, predictedSink, 0)
testLabel.connectTo(0, groundTruthSink, 0)
----
-Let's now define a plan and execute it:
+Let's now place everything in a plan and execute it:
[source,groovy]
----