Yyanyanyyy720Initial commit
b4362d29创建于 2025年11月10日历史提交
import numpy as np

import tensorflow as tf

import torch





def get_tf_output(tensor, operator, variable=None):

    if operator == 'avg_pool':

        return tf.nn.avg_pool(tensor, 2, 2, 'VALID', data_format='NCHW')

    elif operator == 'max_pool':

        return tf.nn.max_pool(tensor, 2, 2, 'VALID', data_format='NCHW')

    elif operator == 'bias_add':

        # bias = tf.Variable(tf.random.normal([real_tensor.shape[-1]], stddev=0.01))

        return tf.nn.bias_add(tensor, variable)

    elif operator == 'conv2d':

        my_filter = tf.Variable(variable)

        return tf.nn.conv2d(tensor, my_filter, strides=1, padding='VALID', data_format='NCHW')

    elif operator == 'softmax':

        return tf.nn.softmax(tensor)

    elif operator == 'batch_normalization':

        bn = tf.keras.layers.BatchNormalization(axis=1, momentum=0.99, epsilon=1e-5, autocast=True, trainable=True)

        return bn(tf.cast(tensor, dtype=tf.float32))

    elif operator == 'relu':

        return tf.nn.relu(tensor)

    elif operator == 'dense':

        if tensor.dtype == 'float16':

            tensor = tf.cast(tensor, tf.float32)

        return tf.matmul(tensor, variable)

    elif operator == 'reduce_mean':

        return tf.reduce_mean(tensor, 1, keepdims=False)

    elif operator == 'reduce_max':

        return tf.reduce_max(tensor, 1, keepdims=False)

    elif operator == 'reduce_min':

        return tf.reduce_min(tensor, 1, keepdims=False)

    elif operator == 'abs':

        return tf.abs(tensor)

    elif operator == 'reduce_sum':

        return tf.reduce_sum(tensor, 1, keepdims=False)

    elif operator == 'sigmoid':

        return tf.nn.sigmoid(tensor)

    elif operator == 'tanh':

        return tf.nn.tanh(tensor)

    elif operator == 'square':

        return tf.square(tensor)

    # elif operator == 'conv3d':

    #     # my_filter = tf.Variable(tf.random.normal([3, 3, 3, real_tensor.shape[-1], 32], stddev=0.01))

    #     return tf.nn.conv3d(real_tensor, variable, strides=[1, 1, 1, 1, 1], padding='SAME')

    # elif operator == 'dilation2d':

    #     # my_filter = tf.Variable(tf.random.normal([3, 3, real_tensor.shape[-1]], stddev=0.01))

    #     return tf.nn.dilation2d(real_tensor, variable, strides=[1, 1, 1, 1], padding='SAME',

    #                             data_format='NHWC', dilations=[1, 1, 1, 1])

    # elif operator == 'depthwise_conv2d':

    #     # my_filter = tf.Variable(tf.random.normal([3, 3, real_tensor.shape[-1], 32], stddev=0.01))

    #     return tf.nn.depthwise_conv2d(real_tensor, variable, strides=[1, 1, 1, 1], padding='SAME')

    # elif operator == 'softmax':

    #     return tf.nn.softmax(real_tensor)

    # elif operator == 'erosion2d':

    #     # my_filter = tf.Variable(tf.random.normal([3, 3, real_tensor.shape[-1]], stddev=0.01))

    #     return tf.nn.depthwise_conv2d(real_tensor, variable, strides=[1, 1, 1, 1], padding='SAME',

    #                                   data_format='NHWC', dilations=[1, 1, 1, 1])

    # elif operator == 'log_softmax':

    #     return tf.nn.log_softmax(real_tensor)

    else:

        return ''