在jupyter和pycharm里面先后运行同一份tensorflow代码报错

最近在学习tensorflow(我用的tendorflow-gpu 1.13),识别手写模糊数字,非常基础的一个代码,我在jupyter里面慢慢学习,写出代码之后,正常运行,copy到pycharm里面直接报错,我就很惊讶。错误提示如下:

jupyter和pycharm运行报错截图

在这里插入图片描述InternalError (see above for traceback): Blas GEMM launch failed : a.shape=(100, 784), b.shape=(784, 10), m=100, n=10, k=784
[[node MatMul (defined at D:/python学习之路/Tensorflow/第五章识别图中模糊的手写数字/测试训练数据和加载数据分开执行/main.py:13) ]]

在我的代码中有写tf.reset_default_graph(),每次都会重建一张新图,但是还是报错
令我好生费解,仔细比对代码,没有地方写的不一样呀!!!

解决方法:
无意中关闭jupyter,单独运行pycharm中的文件,就可以正常运行(神奇)
目前这个问题的原因没有百度到,仅供各位参考,如果哪位大佬明白原因,留言回复我这个菜鸡,感激不尽

运行成功截图
在这里插入图片描述

附上代码:
识别手写模糊数字

from tensorflow.examples.tutorials.mnist import input_data
import pylab
import tensorflow as tf

# 下载数据
mnist = input_data.read_data_sets('MNIST_data/', one_hot=True)  # 模糊手写字0-9
# 重建一张新图
tf.reset_default_graph()
x = tf.placeholder(tf.float32, [None, 784])  # 用以存放训练集图片
y = tf.placeholder(tf.float32, [None, 10])  # 用以存放标签
W = tf.Variable(tf.random_normal(([784, 10])))  # 服从正态分布
b = tf.Variable(tf.zeros([10]))
pred = tf.nn.softmax(tf.matmul(x, W) + b)
cost = tf.reduce_mean(-tf.reduce_sum(y * tf.log(pred), reduction_indices=1))
learning_rate = 0.01
# 使用梯度下降优化器
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

training_epochs = 25         # 整个样本迭代25次
batch_size = 100             # 在训练过程中一次取出100条样本
display_step = 1             # 每训练一次就把具体的中间状态显示出来

saver = tf.train.Saver()
model_path = "log/recognition_numbers.cpkt"


if __name__ == "__main__":
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())

        # 启动循环开始训练
        for epoch in range(training_epochs):
            avg_cost = 0  # 记录平均损失cost
            total_batch = int(mnist.train.num_examples / batch_size)
            # 循环所有数据集
            for i in range(total_batch):
                batch_xs, batch_ys = mnist.train.next_batch(batch_size)  # 读取100个数据
                # 运行优化器
                _, c = sess.run([optimizer, cost], feed_dict={x: batch_xs, y: batch_ys})
                avg_cost += c / total_batch
            # 显示训练中的详细信息
            if (epoch + 1) % display_step == 0:
                print("Epoch:", '%04d' % (epoch + 1), 'cost=', '{:.9f}'.format(avg_cost))
        print("Finished!")

        # 测试模型
        # axis=1的时候,将每一行最大元素所在的索引记录下来,最后返回每一行最大元素所在的索引数组。
        # tf.argmax(pred,1),获取one_hot序列1所在位置,也就是这张图片表示的数字(精妙绝伦)
        correct_prediction = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))
        # 计算准确率
        accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))  # tf.cast格式转换
        print("Accurancy:", accuracy.eval({x: mnist.test.images, y: mnist.test.labels}))

        # 保存模型
        save_path = saver.save(sess, model_path)
        print("Model saved in file: %s" % save_path)


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值