MCPcopy Create free account
hub / github.com/lazyprogrammer/machine_learning_examples / DNN

Class DNN

unsupervised_class2/autoencoder_tf.py:94–177  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

92
93
94class DNN(object):
95 def __init__(self, D, hidden_layer_sizes, K, UnsupervisedModel=AutoEncoder):
96 self.hidden_layers = []
97 count = 0
98 input_size = D
99 for output_size in hidden_layer_sizes:
100 ae = UnsupervisedModel(input_size, output_size, count)
101 self.hidden_layers.append(ae)
102 count += 1
103 input_size = output_size
104 self.build_final_layer(D, hidden_layer_sizes[-1], K)
105
106 def set_session(self, session):
107 self.session = session
108 for layer in self.hidden_layers:
109 layer.set_session(session)
110
111 def build_final_layer(self, D, M, K):
112 # initialize logistic regression layer
113 self.W = tf.Variable(tf.random.normal(shape=(M, K)))
114 self.b = tf.Variable(np.zeros(K).astype(np.float32))
115
116 self.X = tf.compat.v1.placeholder(tf.float32, shape=(None, D))
117 labels = tf.compat.v1.placeholder(tf.int32, shape=(None,))
118 self.Y = labels
119 logits = self.forward(self.X)
120
121 self.cost = tf.reduce_mean(
122 input_tensor=tf.nn.sparse_softmax_cross_entropy_with_logits(
123 logits=logits,
124 labels=labels
125 )
126 )
127 self.train_op = tf.compat.v1.train.AdamOptimizer(1e-2).minimize(self.cost)
128 self.prediction = tf.argmax(input=logits, axis=1)
129
130 def fit(self, X, Y, Xtest, Ytest, pretrain=True, epochs=1, batch_sz=100):
131 N = len(X)
132
133 # greedy layer-wise training of autoencoders
134 pretrain_epochs = 1
135 if not pretrain:
136 pretrain_epochs = 0
137
138 current_input = X
139 for ae in self.hidden_layers:
140 ae.fit(current_input, epochs=pretrain_epochs)
141
142 # create current_input for the next layer
143 current_input = ae.transform(current_input)
144
145 n_batches = N // batch_sz
146 costs = []
147 print("supervised training...")
148 for i in range(epochs):
149 print("epoch:", i)
150 X, Y = shuffle(X, Y)
151 for j in range(n_batches):

Callers 2

mainFunction · 0.90
test_pretraining_dnnFunction · 0.70

Calls

no outgoing calls

Tested by 1

test_pretraining_dnnFunction · 0.56