在使用 PyTorch 训练 GAN 生成手写数字时,代码中可能会出现 plt.show() 导致主线程阻塞的问题。例如,以下代码用于生成并保存图像:

def generate_and_save_image(model, test_input):
    predictions = np.squeeze(model(test_input).cpu().numpy())
    fig = plt.figure(figsize=(4, 4))
    for i in range(predictions.shape[0]):
        plt.subplot(4, 4, i+1)
        plt.imshow((predictions[i]+1) / 2, cmap='gray')
        plt.axis('off')
    plt.show()

可以使用 plt.draw() 替换 plt.show() 来解决阻塞问题。plt.draw() 只会将图像显示到缓存中,不会阻塞主线程。但是,需要手动关闭图像窗口才能继续执行程序。

def generate_and_save_image(model, test_input):
    predictions = np.squeeze(model(test_input).cpu().numpy())
    fig = plt.figure(figsize=(4, 4))
    for i in range(predictions.shape[0]):
        plt.subplot(4, 4, i+1)
        plt.imshow((predictions[i]+1) / 2, cmap='gray')
        plt.axis('off')
    plt.draw()

需要注意的是,使用 plt.draw() 后,图像窗口不会自动关闭,需要手动关闭才能继续执行程序。

如何解决GAN生成手写数字代码阻塞主线程问题 (基于PyTorch)

原文地址: https://www.cveoy.top/t/topic/nGWl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录