8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Tensorflow 理解 Conv2D

SyntaxJuggler 2月前

26 0

刚开始使用 Tensorflow。开始阅读文档并查看网站中提供的示例:https://www.tensorflow.org/api_docs/python/tf/keras/layers/Conv2Dhttps://www.tensorf...

Tensorflow 新手。开始阅读文档并查看网站提供的示例: https://www.tensorflow.org/api_docs/python/tf/keras/layers/Conv2D https://www.tensorflow.org/tutorials/images/cnn

从数学的角度来说我理解卷积,但是我不清楚如何使用 Conv2D 实现它。从第二个链接来看,卷积的实现如下:

layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3))

从卷积的角度来看,过滤器如何仅由一个数字定义?卷积在 Tensorflow 中如何工作?

谢谢,Gus

帖子版权声明 1、本帖标题:Tensorflow 理解 Conv2D
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由SyntaxJuggler在本站《tensorflow》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 因此,我尝试将 SHAP 实现到我在 Kaggle 上的图像数据集上训练的 CNN 模型中。但我一直收到以下属性错误:-------------------------------------------------------------...

    因此,我尝试将 SHAP 实现到我在 Kaggle 上的图像数据集上训练的 CNN 模型中。但我不断收到以下属性错误:

    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    Cell In[9], line 1
    ----> 1 explainer = shap.DeepExplainer(s_model, val_data)
          2 sp_values = explainer.shap_values(val_data)
          4 shap.summary_plot(sp_values, val_data)
    
    File /opt/conda/lib/python3.10/site-packages/shap/explainers/_deep/__init__.py:84, in DeepExplainer.__init__(self, model, data, session, learning_phase_flags)
         81         framework = 'tensorflow'
         83 if framework == 'tensorflow':
    ---> 84     self.explainer = TFDeep(model, data, session, learning_phase_flags)
         85 elif framework == 'pytorch':
         86     self.explainer = PyTorchDeep(model, data)
    
    File /opt/conda/lib/python3.10/site-packages/shap/explainers/_deep/deep_tf.py:155, in TFDeep.__init__(self, model, data, session, learning_phase_flags)
        153     self.expected_value = None
        154 else:
    --> 155     if self.data[0].shape[0] > 5000:
        156         warnings.warn("You have provided over 5k background samples! For better performance consider using smaller random sample.")
        157     if not tf.executing_eagerly():
    
    AttributeError: '_PrefetchDataset' object has no attribute 'shape'
    

    我正在使用以下代码来分割数据集:

    from tensorflow.keras.utils import image_dataset_from_directory
    
    batch_size = 32
    img_height = 224
    img_width = 224
    
    train_data = image_dataset_from_directory(
                      data_dir,
                      validation_split=0.3,
                      subset="training",
                      seed=123,
                      image_size=(img_height, img_width),
                      batch_size=batch_size)
    
    
    val_data = image_dataset_from_directory(data_dir,
                                            validation_split=0.3,
                                            subset="validation",
                                            seed=123,
                                            image_size=(img_height,img_width),
                                            batch_size=batch_size) 
    

    加载之前训练过的模型后,我使用以下代码:

    explainer = shap.KernelExplainer(s_model, val_data)
    sp_values = explainer.shap_values(val_data)
    
    shap.summary_plot(sp_values, val_data)
    

    这就是我收到错误的地方。

    我正在使用 Tensorflow 和 Keras 编写代码。有人能帮我解决这个问题吗?我想在某些图像模型上实现 SHAP、LIME 和任何其他可解释性方法。

  • 让我们首先解释并考虑您的输入大小。想象一个尺寸为 32x32x3 的小型 RGB 图像:

    • 高度(32 像素):这是图像中的行数。
    • 宽度(32 像素):这是图像中的列数。
    • 通道(3):每个像素有三个颜色值(R、G、B)。

    enter image description 此处图片取自 here .

    您使用的 Conv2D 层中的参数是(不考虑其余部分):

    • p3

    • p4

    • p5

    32 个过滤器中的每一个都将与您的输入数据进行卷积,以生成一个 32x32x1 矩阵(考虑填充 =“相同”)。这 32 个矩阵(每个过滤器一个 32x32x1)沿深度维度堆叠,从而产生一个输出张量,其尺寸略小于(或等于,如果使用填充)32x32x32。如果是另一个 Conv2D,则此数据将输出到下一层,您可以再次确定参数,让我们考虑:

    • 滤波器数量:64
    • 内核大小:5x5。

    在此层中,您的卷积过滤器将为 5x5x32(32 是来自上一层的通道数),并且您将拥有 64 个这样的过滤器供该层学习。

    希望这对你有帮助

返回
作者最近主题: