tensorflow 代码退出时出现警告 0xC0000409

tensorflow code exits with a warning 0xC0000409

你好,陌生人 - 好心帮助这里的随机 python 新手。

我正在尝试遵循 Tensorflow Hub 中提供的示例代码,它是关于计算“积分梯度”的。

阅读页面上的描述,我一直在输入页面上提供的示例代码,但它没有给出与 Hub 页面相同的结果。请参考:

https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/interpretability/integrated_gradients.ipynb#scrollTo=l80a8N2vcIP-

下面提供的代码应该提供具有预测概率的两张不同图片(消防船和熊猫)。相反,它没有显示任何内容,并用一行崩溃,说明

“进程已完成,退出代码为 -1073740791 (0xC0000409)”

我用谷歌搜索了这条警告消息,每个案例都与其他案例大不相同。代码有什么问题吗?我正在使用 PyCharm 社区版和 Python 3.10.2.

import matplotlib.pylab as plt
import numpy as np
import tensorflow as tf
import tensorflow_hub as hub


model = tf.keras.Sequential([
    hub.KerasLayer(
        name='inception_v1',
        handle='https://tfhub.dev/google/imagenet/inception_v1/classification/4',
        trainable=False),
])
model.build([None, 224, 224, 3])
model.summary()

def load_imagenet_labels(file_path):
  labels_file = tf.keras.utils.get_file('ImageNetLabels.txt', file_path)
  with open(labels_file) as reader:
    f = reader.read()
    labels = f.splitlines()
  return np.array(labels)

imagenet_labels = load_imagenet_labels('https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt')

def read_image(file_name):
  image = tf.io.read_file(file_name)
  image = tf.io.decode_jpeg(image, channels=3)
  image = tf.image.convert_image_dtype(image, tf.float32)
  image = tf.image.resize_with_pad(image, target_height=224, target_width=224)
  return image

img_url = {
    'Fireboat': 'http://storage.googleapis.com/download.tensorflow.org/example_images/San_Francisco_fireboat_showing_off.jpg',
    'Giant Panda': 'http://storage.googleapis.com/download.tensorflow.org/example_images/Giant_Panda_2.jpeg',
}

img_paths = {name: tf.keras.utils.get_file(name, url) for (name, url) in img_url.items()}
img_name_tensors = {name: read_image(img_path) for (name, img_path) in img_paths.items()}

plt.figure(figsize=(8, 8))
for n, (name, img_tensors) in enumerate(img_name_tensors.items()):
  ax = plt.subplot(1, 2, n+1)
  ax.imshow(img_tensors)
  ax.set_title(name)
  ax.axis('off')
plt.tight_layout()
#plt.show()

def top_k_predictions(img, k=3):
  image_batch = tf.expand_dims(img, 0)
  predictions = model(image_batch)
  probs = tf.nn.softmax(predictions, axis=-1)
  top_probs, top_idxs = tf.math.top_k(input=probs, k=k)
  top_labels = imagenet_labels[tuple(top_idxs)]
  return top_labels, top_probs[0]

for (name, img_tensor) in img_name_tensors.items():

  plt.imshow(img_tensor)
  plt.title(name, fontweight='bold')
  plt.axis('off')
  plt.show()

  pred_label, pred_prob = top_k_predictions(img_tensor)

  for label, prob in zip(pred_label, pred_prob):
    print(f'{label}: {prob:0.1%}')

这是个好问题。我不知道那个样本,它看起来令人印象深刻。

我也在 google 中查看了您的错误消息,在 windows 中出现了很多 pycharm。我建议您使用 google collab 实现代码。该示例已经在协作中,因此它应该是微不足道的。它有很多东西,很难调试。

一旦你让它工作并在合作中理解它。尝试在通用 python jupyter notebook 中重现您的工作。如果你还能做到,那就在pycharm的IDE试试吧。我怀疑错误在于 IDE 而不是原始代码。