# Define a NN loss function that considers results on two inputs?

Posted 1 year ago
1346 Views
|
2 Replies
|
1 Total Likes
|
 Is it possible to define a loss function that considers the results of applying the net to two different inputs? To be clearer, suppose I have a NN net, and a function f of two tensors. I want to use training data of the kind {in1,in2}->value where the loss function would calculate something like (f[net[in1],net[in2]] - value)^2. Is that possible?
Answer
2 Replies
Sort By:
Posted 1 year ago
 Thanks for your comment. That is not quite what I'm looking for though.I want net to perform exactly the same calculation with exactly the same weights on both inputs and then compare the outputs from both.
Answer
Posted 1 year ago
 Dabrowski, I do not know if this is what you will expect, but for your information. (* training data *) in1 = Table[RandomReal[], {100}, {2}]; in2 = Table[RandomReal[], {100}, {3}]; val = Table[RandomInteger[{1, 10}], {100}]; traingdata = (Association[{"In1" -> #[[1]], "In2" -> #[[2]], "Val" -> #[[3]]}] & /@ Transpose[{in1, in2, val}]); (* define network *) net = NetGraph[{LinearLayer[5, "Input" -> 2], LinearLayer[5, "Input" -> 3]}, {NetPort["In1"] -> 1 -> NetPort["Out1"], NetPort["In2"] -> 2 -> NetPort["Out2"]}]; loss = NetGraph[{ThreadingLayer[(#1 + #2) &], SummationLayer[], MeanSquaredLossLayer[]}, {{NetPort["Out1"], NetPort["Out2"]} -> 1 -> 2, {2, NetPort["Val"]} -> 3}]; lossNet = NetGraph[{"net" -> net, "loss" -> loss}, {NetPort["net", "Out1"] -> NetPort["loss", "Out1"], NetPort["net", "Out2"] -> NetPort["loss", "Out2"]}]; (* training *) results = NetTrain[lossNet, traingdata] 
Answer
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments