刚开始使用 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
让我们首先解释并考虑您的输入大小。想象一个尺寸为 32x32x3 的小型 RGB 图像:
图片取自 here .
您使用的 Conv2D 层中的参数是(不考虑其余部分):
p3
p4
p5
32 个过滤器中的每一个都将与您的输入数据进行卷积,以生成一个 32x32x1 矩阵(考虑填充 =“相同”)。这 32 个矩阵(每个过滤器一个 32x32x1)沿深度维度堆叠,从而产生一个输出张量,其尺寸略小于(或等于,如果使用填充)32x32x32。如果是另一个 Conv2D,则此数据将输出到下一层,您可以再次确定参数,让我们考虑:
在此层中,您的卷积过滤器将为 5x5x32(32 是来自上一层的通道数),并且您将拥有 64 个这样的过滤器供该层学习。
希望这对你有帮助
因此,我尝试将 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 和任何其他可解释性方法。