Line 58 in mpnn.py:
self.readout = layers.Set2Set(feature_dim, num_s2s_step)
Whereas the initiation of Set2Set requires specification of type (line 166 in readout.py):
def __init__(self, input_dim, type="node", num_step=3, num_lstm_layer=1):
super(Set2Set, self).__init__(type)
self.input_dim = input_dim
self.output_dim = self.input_dim * 2
self.num_step = num_step
self.lstm = nn.LSTM(input_dim * 2, input_dim, num_lstm_layer)
self.softmax = Softmax(type)