Commit c0fc63dd authored by abster12's avatar abster12
Browse files

corrected errors and added tests for SparseSoftmaxCrossEntropy

parent f2d5672e
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -4319,7 +4319,9 @@ class Hingeloss(Layer):
    if len(inputs) != 2:
      raise ValueError()
    labels, logits = inputs[0], inputs[1]
    out_tensor = tf.losses.hinge_loss(labels=labels, logits=logits)
    reduction = tf.losses.Reduction
    out_tensor = tf.losses.hinge_loss(
        labels=labels, logits=logits, reduction=reduction.NONE)
    if set_tensors:
      self.out_tensor = out_tensor
    return out_tensor
+14 −1
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ from deepchem.models.tensorgraph.layers import Sigmoid
from deepchem.models.tensorgraph.layers import SigmoidCrossEntropy
from deepchem.models.tensorgraph.layers import SoftMax
from deepchem.models.tensorgraph.layers import SoftMaxCrossEntropy
from deepchem.models.tensorgraph.layers import SparseSoftmaxCrossEntropy
from deepchem.models.tensorgraph.layers import StopGradient
from deepchem.models.tensorgraph.layers import TensorWrapper
from deepchem.models.tensorgraph.layers import TimeSeriesDense
@@ -382,6 +383,18 @@ class TestLayers(test_util.TensorFlowTestCase):
      out_tensor = out_tensor.eval()
      assert out_tensor.shape == (batch_size,)

  def test_sparse_softmax_cross_entropy(self):
    batch_size = 10
    n_features = 5
    logit_tensor = np.randon.rand(batch_size, n_features)
    label_tensor = np.random.rand(batch_size)
    with self.test_session() as sess:
      logit_tensor = tf.convert_to_tensor(logit_tensor, dtype=tf.float32)
      label_tensor = tf.convert_to_tensor(label_tensor, dtype=tf.float32)
      out_tensor = SparseSoftmaxCrossEntropy()(logit_tensor, label_tensor)
      out_tensor = out_tensor.eval()
      assert out_tensor.shape == (batch_size,)

  def test_reduce_mean(self):
    """Test that ReduceMean can be invoked."""
    batch_size = 10
@@ -879,7 +892,7 @@ class TestLayers(test_util.TensorFlowTestCase):

  def test_hingeloss(self):

    labels = 2
    labels = 1
    logits = 0.0001
    logits_tensor = np.random.uniform(logits)
    labels_tensor = np.random.rand(labels)
+14 −5
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ from deepchem.models.tensorgraph.layers import Feature, Conv1D, Dense, Flatten,
  SoftMaxCrossEntropy, ReduceMean, ToFloat, ReduceSquareDifference, Conv2D, MaxPool2D, ReduceSum, GraphConv, GraphPool, \
  GraphGather, BatchNorm, WeightedError, ReLU, \
  Conv3D, MaxPool3D, Conv2DTranspose, Conv3DTranspose, \
  LSTMStep, AttnLSTMEmbedding, IterRefLSTMEmbedding, GraphEmbedPoolLayer, GraphCNN, Cast,Hingeloss
  LSTMStep, AttnLSTMEmbedding, IterRefLSTMEmbedding, GraphEmbedPoolLayer, GraphCNN, Cast,Hingeloss,SparseSoftmaxCrossEntropy
from deepchem.models.tensorgraph.symmetry_functions import AtomicDifferentiatedDense
from deepchem.models.tensorgraph.IRV import IRVLayer, IRVRegularize, Slice

@@ -269,6 +269,17 @@ def test_SoftmaxCrossEntropy_pickle():
  tg.save()


def test_SparseSoftmaxCrossEntropy_pickle():
  tg = TensorGraph()
  logits = Feature(shape=(tg.batch_size, 1))
  labels = Feature(shape=(tg.batch_size))
  layer = SparseSoftmaxCrossEntropy(in_layers=[logits, labels])
  tg.add_output(layer)
  tg.set_loss(layer)
  tg.build()
  tg.save()


def test_SigmoidCrossEntropy_pickle():
  tg = TensorGraph()
  feature = Feature(shape=(tg.batch_size, 1))
@@ -685,11 +696,9 @@ def test_Slice_pickle():


def test_hingeloss_pickle():
  labels = 2
  logits = 0.001
  tg = TensorGraph()
  feature = Feature(shape=(tg.batch_size, 1))
  layer = Hingeloss(labels=labels, logits=logits, in_layers=[feature, feature])
  feature = Feature(shape=(1))
  layer = Hingeloss(in_layers=[feature, feature])
  tg.add_output(layer)
  tg.set_loss(layer)
  tg.build()