-
Notifications
You must be signed in to change notification settings - Fork 5.9k
Closed
Description
After talking with @zchen0211 and @Canpio , here is the very early draft of the idea of IfThenElse operator and layer:
A Simple Example
The Python Application Program
cost = paddle.layer.mse(
paddel.layer.fc(
paddle.layer.data(name="features"),
output_size = 100),
paddle.layer.data(name="label"))
parameters = paddle.train(cost, minist_reader(), {"features":0, "label":1})
print paddle.inf(cost, parameters, inference_input_reader())FC Layer as a Python Function
def fc(input):
output = paddle.framework.tensor()
W = paddle.framework.tensor(label="parameter")
b = paddle.framework.tensor(label="parameter")
paddle.operator.fc(input, W, b, output)
return outputFC Operator as a C++ Class
class FC : public framework:Operator {...};The IfThenElse Layer and Operator
Another Example Using IfThenElse Layer
def a_network(input):
A = paddle.layer.fc(input, parameter_name="A")
B = paddle.layer.fc(input, parameter_name="B")
return paddle.layer.if_then_else(
paddle.layer.less_than(A, B),
paddle.layer.fc(
paddle.layer.fc(
paddle.layer.fc
paddle.layer.fc(A, output_size = 100))),
paddle.layer.fc(
paddle.layer.fc(
paddle.layer.fc(B, output_size = 100))))The IfThenElse Layer
def if_then_else(cond, left, right) :
ret = paddle.framework.tensor()
paddle.operator.if_then_else(cond, left, right, ret)
return retThe IfThenElseOp C++ Class
class IfThenElseOp : public framework::Operator {
// Check that cond returns a minibatch of boolean values.
// Check that left and right outputs are of the same size.
};Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels