star_platinum.py 文件源码

python
阅读 17 收藏 0 点赞 0 评论 0

项目:identifiera-sarkasm 作者: risnejunior 项目源码 文件源码
def feed_network(self,data,keep_prob,chunk_size,n_chunks,dynamic):

        sequence_lengths = None
        if dynamic:
            sequence_lengths = net.calc_seqlenth(data if isinstance(data, tf.Tensor) else tf.stack(data))
        weight_dropout1 = tf.nn.dropout(self._hidden_layer_1['weights'], keep_prob)
        weight_dropout2 = tf.nn.dropout(self._hidden_layer_2['weights'], keep_prob)
        output_dropout = tf.nn.dropout(self._output['weights'], keep_prob)
        rnn_dropout1 = rnn.core_rnn_cell.DropoutWrapper(self._lstm_cell,output_keep_prob=keep_prob)
        rnn_dropout2 = rnn.core_rnn_cell.DropoutWrapper(self._gru_cell,output_keep_prob=keep_prob)
        batch_size = tf.shape(data)[0]

        #begin Calculations
        input_shape = data.get_shape().as_list()
        ndim = len(input_shape)
        axis = [1, 0] + list(range(2,ndim))
        data = tf.transpose(data,(axis))
        sequence = tf.unstack(data)
        lstm_outputs, states = rnn.static_rnn(rnn_dropout1, sequence, dtype=tf.float32, sequence_length = sequence_lengths)
        if dynamic:
            lstm_outputs = tf.transpose(tf.stack(lstm_outputs), [1, 0, 2])
            lstm_output = net.advanced_indexing_op(lstm_outputs, sequence_lengths)
        else:
            lstm_output = lstm_outputs[-1]

        layer1 = tf.add(tf.matmul(lstm_output,weight_dropout1),self._hidden_layer_1['biases'])
        layer1 = tf.nn.relu(layer1)

        layer2 = tf.add(tf.matmul(layer1,weight_dropout2),self._hidden_layer_2['biases'])
        layer2 = tf.nn.relu(layer2)
        input_to_gru = tf.reshape(layer2,[batch_size,n_chunks,10])
        ndim = input_to_gru.get_shape().as_list()
        chunk_size = ndim[-1]
        input_to_gru = tf.transpose(input_to_gru,[1,0,2])
        input_to_gru = tf.reshape(input_to_gru,[-1,chunk_size])
        input_to_gru = tf.split(input_to_gru,n_chunks,0)

        gru_outputs, state = rnn.static_rnn(rnn_dropout2, input_to_gru, dtype=tf.float32, sequence_length = sequence_lengths)

        if dynamic:
            gru_outputs = tf.transpose(tf.stack(gru_outputs), [1, 0, 2])
            gru_output = net.advanced_indexing_op(gru_outputs, sequence_lengths)
        else:
            gru_output = gru_outputs[-1]

        output = tf.add(tf.matmul(gru_output,output_dropout),self._output['biases'])
        return output
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号