def _build(self):
netname = "CBOW"
W = self.flags.window_size
M = self.flags.embedding_size
V = self.V # vocabulary size, should be passed from DB
H = 128
# the real window is W*2 + 1
with tf.variable_scope(netname):
self.inputs = tf.placeholder(tf.int32, shape=(None,W*2+1)) # [B, W*2+1]
layer_name = "{}/embedding".format(netname)
x = self._get_embedding(layer_name, self.inputs, V, M, reuse=False) # [B, W*2+1, M]
x = tf.reshape(x,[tf.shape(x)[0],tf.shape(x)[1]*tf.shape(x)[2]]) # [B,(W*2+1)*M]
layer_name = "{}/fc1".format(netname)
net = self._fc(x, fan_in=M*(W*2+1), fan_out=H, layer_name=layer_name,
activation='relu') # [B, H]
layer_name = "{}/fc2".format(netname)
net = self._fc(net, fan_in=H, fan_out=2, layer_name=layer_name,
activation=None) # [B, 2]
self.logit = net
评论列表
文章目录