tensorflow 代码退出时出现警告 0xC0000409
tensorflow code exits with a warning 0xC0000409
你好,陌生人 - 好心帮助这里的随机 python 新手。
我正在尝试遵循 Tensorflow Hub 中提供的示例代码,它是关于计算“积分梯度”的。
阅读页面上的描述,我一直在输入页面上提供的示例代码,但它没有给出与 Hub 页面相同的结果。请参考:
下面提供的代码应该提供具有预测概率的两张不同图片(消防船和熊猫)。相反,它没有显示任何内容,并用一行崩溃,说明
“进程已完成,退出代码为 -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 而不是原始代码。
你好,陌生人 - 好心帮助这里的随机 python 新手。
我正在尝试遵循 Tensorflow Hub 中提供的示例代码,它是关于计算“积分梯度”的。
阅读页面上的描述,我一直在输入页面上提供的示例代码,但它没有给出与 Hub 页面相同的结果。请参考:
下面提供的代码应该提供具有预测概率的两张不同图片(消防船和熊猫)。相反,它没有显示任何内容,并用一行崩溃,说明
“进程已完成,退出代码为 -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 而不是原始代码。