Tensorflow学习笔记

    科技2026-03-18  6

    tensorflow错误

    1.队列输入数据错误 错误语句:

    enq_many = Q.enqueue_many([0.1, 0.2, 0.3])

    出现的错误类型:

    ValueError: Shape () must have rank at least 1

    修改方法: 这里需要输入的是列表变量,如果输入一维,则默认输入的是tensor,需要加一个括号变成列表变量。

    enq_many = Q.enqueue_many([[0.1, 0.2, 0.3],])

    2.会话定义错误 错误语句:

    with tf.Session as sess:

    错误类型:

    AttributeError: __exit__

    修改方法:

    with tf.Session() as sess:

    3.子线程在会话结束后的释放问题 错误类型:

    CancelledError (see above for traceback): Enqueue operation was cancelled

    原因: 在会话中,主线程与子线程异步执行,当主线程的取数据和训练操作完成之后,主线程结束,会话结束,内存被释放。 但这时,子线程还在写入数据。

    修改方法: 开启线程管理器回收子线程

    with Session() as sess: # 初始化变量 sess.run(init_op) # 开启线程管理器 coord = tf.train.Coordinator() # 开启子线程,指定coord, threads = qr.create_threads(sess, coord=coord, start=True) # 主线程读取数据并训练 for i in range(300): print(sess.run(Q.dequeue())) # 回收线程 coord.request_stop() coord.join(threads)

    3.其他注意事项

    在会话外定义队列op、数据操作op 在会话内部,首先对队列进行初始化才能显示,显示方法是*.eval()

    Processed: 0.018, SQL: 9