tensorflow tf.data.experimental.CsvDataset导致IOT指令崩溃

ibrsph3r  于 2022-10-29  发布在  其他
关注(0)|答案(7)|浏览(137)

问题类型

错误

来源

二进制的

tensorflow 版本

tf 2.10,tf-每晚

自定义代码

是的

操作系统平台和分发

Linux操作系统Ubuntu 20.04

移动的设备

  • 没有回应 *

Python版本

  • 没有回应 *

Bazel版本

  • 没有回应 *

GCC/编译器版本

  • 没有回应 *

CUDA/cuDNN版本

  • 没有回应 *

GPU型号和内存

  • 没有回应 *

当前行为?

Applying shuffle+repeat+batch on `tf.data.experimental.CsvDataset` causes check failed and IOT instruction (core dumped) crashes.

重现问题的独立代码

import tensorflow as tf

# The following code is from https://www.tensorflow.org/api_docs/python/tf/data/experimental/CsvDataset

with open('/tmp/my_file0.csv', 'w') as f:
  f.write('abcdefg,4.28E10,5.55E6,12\n')
  f.write('hijklmn,-5.3E14,,2\n')
dataset = tf.data.experimental.CsvDataset(
  "/tmp/my_file0.csv",
  [tf.float32,  # Required field, use dtype or empty tensor
   tf.constant([0.0], dtype=tf.float32),  # Optional field, default to 0.0
   tf.int32,  # Required field, use dtype or empty tensor
  ],
  select_cols=[1,2,3]  # Only parse last three columns
)

# The following operation is causing Check Fail

for e in range(10):
    dataset = dataset.shuffle(1000).repeat().batch(512)

相关日志输出

F tensorflow/core/framework/tensor_shape.cc:404] Check failed: 0 <= new_num_elements (0 vs. -9223372036854775808)
IOT instruction (core dumped)
6yjfywim

6yjfywim1#

你能分享一下你的/tmp/my_file0.csv吗?

mkshixfv

mkshixfv2#

嗨@巴克
如果您直接在报表中运行代码示例,它将自动为您生成/tmp/my_file0.csv!(也来自doc

with open('/tmp/my_file0.csv', 'w') as f:
  f.write('abcdefg,4.28E10,5.55E6,12\n')
  f.write('hijklmn,-5.3E14,,2\n')
chhkpiq4

chhkpiq43#

好吧,也许它可以得到更好的“保护”,而不是崩溃,但你的用例是什么关于批处理多次在循环?
我想你想不想用最后一批?

for e in range(10):
  dataset = dataset.shuffle(1000).repeat()

dataset = dataset.batch(512)
b91juud3

b91juud34#

@bhack是的,你是对的,确实在这个代码示例中,多次批处理是不必要的。但是,我认为“保护”这样一个操作比崩溃更好?

v64noz0r

v64noz0r5#

@creakseek是的,但是你的原始循环产生了溢出
让我们看看是否可以用其他东西代替CHECK_LE
tensorflow /tensorflow /核心/框架/Tensor形状.cc
38af575中的第418至419行
| | 如果是,则返回一个新的值。|
| | 检查_LE(0,新的元素数);|

相关问题