关于TensorFlow 中使用sess导致内存不足

想要将tf.tensor转换为numpy格式,网上介绍的无非就是两种方法,一种是直接xxx.numpy(),结果报错,按照网上说的修改方法也不行;另一种方法就是使用session,然后xxxxx.eval(session=sess),结果会导致内存直接爆炸,16g的内存装满,显示的warning为
2021-03-16 00:22:36.412770: W tensorflow/core/framework/cpu_allocator_impl.cc:80] Allocation of 4759040000 exceeds 10% of free system memory.
2021-03-16 00:22:37.746183: W tensorflow/core/framework/cpu_allocator_impl.cc:80] Allocation of 4055040000 exceeds 10% of free system memory.

代码为
with tf.compat.v1.Session() as sess:
sess.run(tf.compat.v1.global_variables_initializer())
training_data_x = training_data_x.eval(session=sess)

其中training_data_x为tf.tensor的矩阵,想转化为numpy

求求大佬们帮帮孩子吧,有没有别的数据转化方式或者有没有办法解决这个内存爆炸的问题

TensorFlow 代码,如果遇到错误,通常需要检查以下几个方面来避免这些问题: 1. **变量初始化**:确保所有必需的张量、变量或其他资源都已经正确初始化。忘记初始化可能导致异常,如 `UninitializedVariableError`。 ```python my_variable = tf.Variable(0) init_op = tf.global_variables_initializer() with tf.Session() as sess: sess.run(init_op) # 现在我的变量已经初始化了 ``` 2. **维度和形状**:操作的张量尺寸或形状不匹配可能导致错误。在运算前,务必确认它们的兼容性。 3. **依赖顺序**:确保依赖的计算图结构正确,例如,在使用 `tf.data.Dataset` 时,先构建数据集再进行迭代。 ```python dataset = ... # 创建数据集 iterator = dataset.make_initializable_iterator() next_element = iterator.get_next() with tf.Session() as sess: sess.run(iterator.initializer) while True: try: data = sess.run(next_element) process_data(data) except tf.errors.OutOfRangeError: break ``` 4. **内存管理**:注意避免长时间持有大张量占用大量内存,使用占位符(`tf.placeholder`)代替,或及时关闭不再使用Session。 5. **版本兼容性**:确认使用TensorFlow 版本与代码、库函数兼容,更新库到最新版,修复已知问题。 6. **错误处理**:使用 try-except 来捕获并处理可能出现的异常,避免程序崩溃。 通过细心地检查代码,遵循官方文档的最佳实践,以及利用调试工具,你可以减少这类报错的发生。如果你遇到具体的错误信息,记得将错误复制粘贴出来,以便更准确地定位问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值