Source code for deephyper.nas.spacelib.tabular.one_layer
import tensorflow as tf
from deephyper.nas import KSearchSpace
from deephyper.nas.node import ConstantNode, VariableNode
from deephyper.nas.operation import operation, Concatenate
Dense = operation(tf.keras.layers.Dense)
Dropout = operation(tf.keras.layers.Dropout)
[docs]class OneLayerSpace(KSearchSpace):
def __init__(
self, input_shape, output_shape, batch_size=None, seed=None, regression=True
):
super().__init__(input_shape, output_shape, batch_size=batch_size, seed=seed)
self.regression = regression
[docs] def build(self):
if type(self.input_shape) is list:
vnodes = []
for i in range(len(self.input_shape)):
vn = self.gen_vnode()
vnodes.append(vn)
self.connect(self.input_nodes[i], vn)
print(i)
prev_node = ConstantNode(Concatenate(self, vnodes))
else:
prev_node = self.gen_vnode()
self.connect(self.input_nodes[0], prev_node)
output_node = ConstantNode(
Dense(
self.output_shape[0], activation=None if self.regression else "softmax"
)
)
self.connect(prev_node, output_node)
return self
def gen_vnode(self) -> VariableNode:
vnode = VariableNode()
for i in range(1, 1000):
vnode.add_op(Dense(i, tf.nn.relu))
return vnode
if __name__ == "__main__":
from tensorflow.keras.utils import plot_model
shapes = dict(input_shape=[(10,), (10,)], output_shape=(1,))
space = OneLayerSpace(**shapes).build()
model = space.sample()
plot_model(model)