Skip to content

Commit 8f9107d

Browse files
authored
Redo Framework Ops based on the current version of Master. (#342)
1 parent 51a9f5e commit 8f9107d

30 files changed

+3697
-324
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
op {
22
graph_op_name: "SoftmaxCrossEntropyWithLogits"
33
endpoint {
4-
name: "nn.raw.SoftmaxCrossEntropyWithLogits"
4+
name: "nn.SoftmaxCrossEntropyWithLogits"
55
}
66
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
op {
22
graph_op_name: "SparseSoftmaxCrossEntropyWithLogits"
33
endpoint {
4-
name: "nn.raw.SparseSoftmaxCrossEntropyWithLogits"
4+
name: "nn.SparseSoftmaxCrossEntropyWithLogits"
55
}
66
}

tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnOps.java

+28-141
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@
8383
import org.tensorflow.op.nn.Relu;
8484
import org.tensorflow.op.nn.Relu6;
8585
import org.tensorflow.op.nn.Selu;
86-
import org.tensorflow.op.nn.SigmoidCrossEntropyWithLogits;
8786
import org.tensorflow.op.nn.Softmax;
8887
import org.tensorflow.op.nn.SoftmaxCrossEntropyWithLogits;
8988
import org.tensorflow.op.nn.Softsign;
@@ -103,16 +102,13 @@
103102
* @see {@link Ops}
104103
*/
105104
public final class NnOps {
106-
public final NnRawOps raw;
107-
108105
private final Scope scope;
109106

110107
private final Ops ops;
111108

112109
NnOps(Ops ops) {
113110
this.scope = ops.scope();
114111
this.ops = ops;
115-
raw = new NnRawOps(ops);
116112
}
117113

118114
/**
@@ -1815,55 +1811,6 @@ public <T extends TNumber> Selu<T> selu(Operand<T> features) {
18151811
return Selu.create(scope, features);
18161812
}
18171813

1818-
/**
1819-
* Computes sigmoid cross entropy given <code>logits</code>.
1820-
*
1821-
* <p>Measures the probability error in discrete classification tasks in which each class is
1822-
* independent and not mutually exclusive. For instance, one could perform multilabel
1823-
* classification where a picture can contain both an elephant and a dog at the same time.
1824-
*
1825-
* <p>For brevity, let <code>x = logits</code>, <code>z = labels</code>. The logistic loss in
1826-
* pseudo-code is
1827-
*
1828-
* <pre>
1829-
* z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x))
1830-
* = z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x)))
1831-
* = z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x)))
1832-
* = z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x))
1833-
* = (1 - z) * x + log(1 + exp(-x))
1834-
* = x - x * z + log(1 + exp(-x))
1835-
* </pre>
1836-
*
1837-
* <p>For <code>x < 0</code>, to avoid overflow in <code>exp(-x)</code>, we reformulate the above
1838-
*
1839-
* <pre>
1840-
* x - x * z + log(1 + exp(-x))
1841-
* = log(exp(x)) - x * z + log(1 + exp(-x))
1842-
* = - x * z + log(1 + exp(x))
1843-
* </pre>
1844-
*
1845-
* <p>Hence, to ensure stability and avoid overflow, the implementation uses this equivalent
1846-
* formulation
1847-
*
1848-
* <pre>
1849-
* max(x, 0) - x * z + log(1 + exp(-abs(x)))
1850-
* </pre>
1851-
*
1852-
* <p></ode>logits</code> and <code>labels</code> must have the same type and shape.
1853-
*
1854-
* <p>
1855-
*
1856-
* @param labels the labels
1857-
* @param logits the logits of type float32 or float64
1858-
* @param <T> the type of labels and logits
1859-
* @return the component-wise logistic losses.
1860-
* @throws IllegalArgumentException if logits' and labels' do not have the same shape
1861-
*/
1862-
public <T extends TNumber> Operand<T> sigmoidCrossEntropyWithLogits(Operand<T> labels,
1863-
Operand<T> logits) {
1864-
return SigmoidCrossEntropyWithLogits.sigmoidCrossEntropyWithLogits(scope, labels, logits);
1865-
}
1866-
18671814
/**
18681815
* Computes softmax activations.
18691816
* For each batch {@code i} and class {@code j} we have
@@ -1881,53 +1828,20 @@ public <T extends TNumber> Softmax<T> softmax(Operand<T> logits) {
18811828
}
18821829

18831830
/**
1884-
* Computes softmax cross entropy between <code>logits</code> and <code>labels</code>.
1885-
*
1886-
* <p>Measures the probability error in discrete classification tasks in which the classes are
1887-
* mutually exclusive (each entry is in exactly one class). For example, each CIFAR-10 image is
1888-
* labeled with one and only one label: an image can be a dog or a truck, but not both.
1889-
*
1890-
* <p><b>NOTE:</b>
1891-
*
1892-
* <p>While the classes are mutually exclusive, their probabilities need not be. All that is
1893-
* required is that each row of <code>labels</code> is a valid probability distribution. If they
1894-
* are not, the computation of the gradient will be incorrect.
1895-
*
1896-
* <p>If using exclusive <code>labels</code> (wherein one and only one class is true at a time),
1897-
* see {@link org.tensorflow.op.NnOps#sparseSoftmaxCrossEntropyWithLogits}
1898-
*
1899-
* <p>Usage:
1900-
*
1901-
* <pre>
1902-
* Operand&lt;TFloat32&gt; logits =
1903-
* tf.constant(new float[][] {{4.0F, 2.0F, 1.0F}, {0.0F, 5.0F, 1.0F}} );
1904-
* Operand&lt;TFloat32&gt; labels =
1905-
* tf.constant(new float[][] {{1.0F, 0.0F, 0.0F}, {0.0F, 0.8F, 0.2F}} );
1906-
* Operand&lt;TFloat32&gt; output =
1907-
* tf.nn.softmaxCrossEntropyWithLogits(labels, logits, -1);
1908-
* // output Shape = [2]
1909-
* // dataType = FLOAT (1)
1910-
* // values { 0.169846, 0.824745 }
1911-
* </pre>
1912-
*
1913-
* <p>Backpropagation will happen into both <code>logits</code> and <code>labels</code>. To
1914-
* disallow backpropagation into <code>labels</code>, pass label tensors through <code>
1915-
* tf.stopGradient</code> before feeding it to this function.
1831+
* Computes softmax cross entropy cost and gradients to backpropagate.
1832+
* Inputs are the logits, not probabilities.
19161833
*
1917-
* @param labels Each vector along the class dimension should hold a valid probability
1918-
* distribution e.g. for the case in which labels are of shape <code>[batch_size, num_classes]
1919-
* </code>, each row of <code>labels[i]</code> must be a valid probability distribution.
1920-
* @param logits Per-label activations, typically a linear output. These activation energies are
1921-
* interpreted as unnormalized log probabilities.
1922-
* @param axis The class dimension. -1 is the last dimension.
1923-
* @param <T> the number type of the operands
1924-
* @return the softmax cross entropy loss. Its type is the same as <code>logits</code> and its
1925-
* shape is the same as <code>labels</code> except that it does not have the last dimension of
1926-
* <code>labels</code>.
1834+
* @param <T> data type for {@code loss} output
1835+
* @param features batch_size x num_classes matrix
1836+
* @param labels batch_size x num_classes matrix
1837+
* The caller must ensure that each batch of labels represents a valid
1838+
* probability distribution.
1839+
* @param <T> data type for {@code SoftmaxCrossEntropyWithLogits} output and operands
1840+
* @return a new instance of SoftmaxCrossEntropyWithLogits
19271841
*/
1928-
public <T extends TNumber, U extends TNumber> Operand<T> softmaxCrossEntropyWithLogits(
1929-
Operand<U> labels, Operand<T> logits, int axis) {
1930-
return SoftmaxCrossEntropyWithLogits.softmaxCrossEntropyWithLogits(scope, labels, logits, axis);
1842+
public <T extends TNumber> SoftmaxCrossEntropyWithLogits<T> softmaxCrossEntropyWithLogits(
1843+
Operand<T> features, Operand<T> labels) {
1844+
return SoftmaxCrossEntropyWithLogits.create(scope, features, labels);
19311845
}
19321846

19331847
/**
@@ -2114,50 +2028,23 @@ public <T extends TType> SpaceToDepth<T> spaceToDepth(Operand<T> input, Long blo
21142028
}
21152029

21162030
/**
2117-
* Computes sparse softmax cross entropy between <code>logits</code> and <code>labels</code>.
2118-
*
2119-
* <p>Measures the probability error in discrete classification tasks in which the classes are
2120-
* mutually exclusive (each entry is in exactly one class). For example, each CIFAR-10 image is
2121-
* labeled with one and only one label: an image can be a dog or a truck, but not both.
2122-
*
2123-
* <p><b>NOTE:</b>
2124-
*
2125-
* <p>For this operation, the probability of a given label is considered exclusive. That is, soft
2126-
* classes are not allowed, and the <code>labels</code> vector must provide a single specific
2127-
* index for the true class for each row of <code>logits</code> (each minibatch entry). For soft
2128-
* softmax classification with a probability distribution for each entry, {@link
2129-
* org.tensorflow.op.NnOps#softmaxCrossEntropyWithLogits}.
2130-
*
2131-
* <p><b>WARNING:</b>
2031+
* Computes softmax cross entropy cost and gradients to backpropagate.
2032+
* Unlike {@code SoftmaxCrossEntropyWithLogits}, this operation does not accept
2033+
* a matrix of label probabilities, but rather a single label per row
2034+
* of features. This label is considered to have probability 1.0 for the
2035+
* given row.
2036+
* <p>Inputs are the logits, not probabilities.
21322037
*
2133-
* <p>This op expects unscaled logits, since it performs a <code>softmax</code> on <code>logits
2134-
* </code> internally for efficiency. Do not call this op with the output of <code>softmax</code>,
2135-
* as it will produce incorrect results.
2136-
*
2137-
* <p>A common use case is to have logits of shape <code>[batchSize, numClasses]</code> and have
2138-
* labels of shape <code>[batchSize]</code>, but higher dimensions are supported, in which case
2139-
* the <code>dim</code>-th dimension is assumed to be of size <code>numClasses</code>. <code>
2140-
* logits</code> must have the <cod>dataType</cod> of <code>TFloat16</code>, <code>TFloat32</code>
2141-
* , or <code>TFloat64</code>, and <code>labels</code> must have the dtype of <code>TInt32</code>
2142-
* or <code>TInt64</code>.
2143-
*
2144-
* @param labels <code>Tensor</code> of shape <code>[d_0, d_1, ..., d_{r-1}]</code> (where <code>r
2145-
* </code> is rank of <code>labels</code> and result) and the dataType is <code>TInt32</code>
2146-
* or <code>TInt64</code>. Each entry in <code>labels</code> must be an index in <code>[0,
2147-
* numClasses)</code>. Other values will raise an exception when this op is run on CPU, and
2148-
* return <code>NaN</code> for corresponding loss and gradient rows on GPU.
2149-
* @param logits Per-label activations (typically a linear output) of shape <code>[d_0, d_1, ...,
2150-
* d_{r-1}, numClasses]</code> and dataType of <code>TFloat16</code>, <code>TFloat32</code>,
2151-
* or <code>TFloat64</code>. These activation energies are interpreted as unnormalized log
2152-
* probabilities.
2153-
* @return A <code>Tensor</code> of the same shape as <code>labels</code> and of the same type as
2154-
* <code>logits</code> with the softmax cross entropy loss.
2155-
* @throws IllegalArgumentException If logits are scalars (need to have rank >= 1) or if the rank
2156-
* of the labels is not equal to the rank of the logits minus one.
2157-
*/
2158-
public <T extends TNumber, U extends TNumber> Operand sparseSoftmaxCrossEntropyWithLogits(
2159-
Operand<T> labels, Operand<U> logits) {
2160-
return SparseSoftmaxCrossEntropyWithLogits.sparseSoftmaxCrossEntropyWithLogits(scope, labels, logits);
2038+
* @param <T> data type for {@code loss} output
2039+
* @param features batch_size x num_classes matrix
2040+
* @param labels batch_size vector with values in [0, num_classes).
2041+
* This is the label for the given minibatch entry.
2042+
* @param <T> data type for {@code SparseSoftmaxCrossEntropyWithLogits} output and operands
2043+
* @return a new instance of SparseSoftmaxCrossEntropyWithLogits
2044+
*/
2045+
public <T extends TNumber> SparseSoftmaxCrossEntropyWithLogits<T> sparseSoftmaxCrossEntropyWithLogits(
2046+
Operand<T> features, Operand<? extends TNumber> labels) {
2047+
return SparseSoftmaxCrossEntropyWithLogits.create(scope, features, labels);
21612048
}
21622049

21632050
/**

tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/NnRawOps.java

-83
This file was deleted.

tensorflow-core/tensorflow-core-api/src/gen/annotations/org/tensorflow/op/Ops.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -367,10 +367,10 @@ public final class Ops {
367367

368368
public final SignalOps signal;
369369

370-
public final TrainOps train;
371-
372370
public final QuantizationOps quantization;
373371

372+
public final TrainOps train;
373+
374374
private final Scope scope;
375375

376376
private Ops(Scope scope) {
@@ -393,8 +393,8 @@ private Ops(Scope scope) {
393393
math = new MathOps(this);
394394
audio = new AudioOps(this);
395395
signal = new SignalOps(this);
396-
train = new TrainOps(this);
397396
quantization = new QuantizationOps(this);
397+
train = new TrainOps(this);
398398
}
399399

400400
/**

tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/global/tensorflow.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -3150,7 +3150,7 @@ public static native void TF_RegisterFilesystemPlugin(
31503150
// TF_InitKernel to do op/kernel registration.
31513151
// Plugin should implement TF_InitKernel to register kernels. This function
31523152
// should register all kernels in a plugin.
3153-
public static native void TF_InitKernel();
3153+
31543154
// Targeting ../Create_func_TF_OpKernelConstruction.java
31553155

31563156

Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
// This class has been generated, DO NOT EDIT!
1717

18-
package org.tensorflow.op.nn.raw;
18+
package org.tensorflow.op.nn;
1919

2020
import org.tensorflow.Operand;
2121
import org.tensorflow.Operation;
@@ -34,7 +34,7 @@
3434
* @param <T> data type for {@code loss} output
3535
*/
3636
@Operator(
37-
group = "nn.raw"
37+
group = "nn"
3838
)
3939
public final class SoftmaxCrossEntropyWithLogits<T extends TNumber> extends RawOp {
4040
/**
@@ -50,7 +50,7 @@ private SoftmaxCrossEntropyWithLogits(Operation operation) {
5050
super(operation);
5151
int outputIdx = 0;
5252
loss = operation.output(outputIdx++);
53-
backprop = operation.output(outputIdx++);
53+
backprop = operation.output(outputIdx);
5454
}
5555

5656
/**
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
// This class has been generated, DO NOT EDIT!
1717

18-
package org.tensorflow.op.nn.raw;
18+
package org.tensorflow.op.nn;
1919

2020
import org.tensorflow.Operand;
2121
import org.tensorflow.Operation;
@@ -38,7 +38,7 @@
3838
* @param <T> data type for {@code loss} output
3939
*/
4040
@Operator(
41-
group = "nn.raw"
41+
group = "nn"
4242
)
4343
public final class SparseSoftmaxCrossEntropyWithLogits<T extends TNumber> extends RawOp {
4444
/**
@@ -54,7 +54,7 @@ private SparseSoftmaxCrossEntropyWithLogits(Operation operation) {
5454
super(operation);
5555
int outputIdx = 0;
5656
loss = operation.output(outputIdx++);
57-
backprop = operation.output(outputIdx++);
57+
backprop = operation.output(outputIdx);
5858
}
5959

6060
/**
Binary file not shown.

0 commit comments

Comments
 (0)