当前位置: 首页 > 知识库问答 >
问题:

将Tensorflow估计器API用于SemSeg图像

丌官盛
2023-03-14

我试图用Tensorflow估计器API实现我的模型。作为数据输入函数,我使用

def input_fn():
    train_in_np = sorted(io_utils.loadDataset(join(basepath, r"leftImg8bit/train/*/*")))
    train_out_np = sorted(io_utils.loadDataset(join(basepath, r"gtFine/train/*/*_ignoreLabel.png")))

    train_in = tf.constant(train_in_np)
    train_out = tf.constant(train_out_np)

    tr_data = tf.data.Dataset.from_tensor_slices((train_in, train_out))
    tr_data = tr_data.shuffle(len(train_in_np))
    tr_data = tr_data.repeat(epoch_cnt+1)

    tr_data = tr_data.apply(tf.contrib.data.map_and_batch(parse_files, batch_size=batchSize))
    tr_data = tr_data.prefetch(buffer_size=batchSize)

    iterator = tr_data.make_initializable_iterator()
    return iterator.get_next()

我知道。loadDataset只返回文件路径列表。数据本身由

def parse_files(in_file, gt_file):
    image_in = tf.read_file(in_file)
    image_in = tf.image.decode_image(image_in, channels=3)
    image_in.set_shape([None, None, 3])
    image_in = tf.cast(image_in, tf.float32)

    mean, std = tf.nn.moments(image_in, [0, 1])
    image_in = image_in - mean
    image_in = image_in / std

    gt = tf.read_file(gt_file)
    gt = tf.image.decode_image(gt, channels=1)    
    gt.set_shape([None, None, 1])
    gt = tf.cast(gt, tf.int32)

    return {'img':image_in}, gt

我的估计从

def estimator_fcn_model_fn(features, labels, mode, params):
    x = tf.feature_column.input_layer(features, params['feature_columns'])

特征列定义为

my_feature_columns = []
my_feature_columns.append(tf.feature_column.numeric_column(key='img'))

为了清晰起见,我跳过了其余的代码。我的问题在于功能的形状:

不支持卷积与排名输入,2)

x、features和feature_列的打印输出:

张量(“input_layer/concat:0”,shape=(?,1),dtype=float32)

{'img': tf.张量IteratorGetNext: 0形状=(?, ?, ?, 3)dtype=Float32}

[_NumericColumn(键='img',形状=(1,),default_value=无,dtype=tf.float32,normalizer_fn=无)]

如果有人知道如何解决这个问题的话,我想这与功能栏的类型有关,但我不知道谁可以将此应用于图像。

共有1个答案

端木宏才
2023-03-14

正如Y.罗给出的提示tf.feature_column.input_layer不适合图像。一种更简单的方法是直接通过一个键使用特征字典,它可以通过参数传递以获得更大的灵活性。

x = features[params['input_name']]

而不是

x = tf.feature_column.input_layer(features, params['feature_columns'])
 类似资料:
  • 有人有使用tensorflow estimator API进行混合精度训练的经验吗? 我尝试将输入转换为tf.float16,并将网络结果转换回tf.float32。为了扩展损失,我使用了tf.contrib.mixed_precision.LossScaleOptimizer。

  • 我正在谷歌 colab 环境中的 tensorflow 中训练一个 DNN,代码直到昨天都运行良好,但现在当我运行代码的估计器训练部分时,它给出了一个错误。 我不知道到底是什么原因,谷歌colab是否使用任何更新版本的tensorflow,其中某些函数与旧版本不兼容?因为我之前的代码没有问题,我没有改变它。似乎其他代码也存在此问题,例如,斯坦福大学的此示例代码之前运行没有任何错误,https://

  • 我想建立一个lstm模型。但我正在得到

  • 我正在尝试使用我们自己的CSV数据集运行本教程的训练模型,其中每一行由4个int值(最后一个是标签)组成,距离使用TensorFlow Serving: 我正在远处使用Docker运行TensorFlow Serving,我的开发环境是使用Python 3.6的Windows。 我使用以下代码导出模型,类似于此处给出的示例: 老实说,我不确定会有什么样的结果,但是在本指南中,half _ plus

  • 我想将ptb_word_lm.py示例中的损失函数更改为。查看实现: 我想啊 第三个参数(输入)是语言模型的logits, 第四个参数(标签)是语言模型的下一个单词(self.\u targets) num_classes是语音大小 但我不知道前两个参数是什么,权重和偏差。我如何适应到语言模型?谢谢 @亚伦: 谢谢,我尝试了以下方法: 根据这里的文件: > 偏差:形状的张量[num_类]。阶级偏见

  • 问题内容: 我想将TensorFlow计算图导出为XML或类似的东西,所以我可以使用外部程序对其进行修改,然后重新导入。我找到了Meta Graph, 但是它以二进制格式导出,我不知道如何修改。 是否存在这种能力? 问题答案: TensorFlow数据流图的本机序列化格式使用协议缓冲区,该缓冲区具有许多不同语言的绑定。您可以生成代码,该代码应能够从以下两种消息模式中解析二进制数据:(一个较低级别的

  • 更新:在我的个人电脑和谷歌云上测试相同的代码,使用tenstorflow gpu 1.13.1工作。 使用TensorFlow估计器和运行train_and_evaluate给我以下错误消息: "ValueError: Tensor("Const: 0",form=(3,),dtype=Float32)必须来自与Tensor("ParallelMapDataset: 0",form=(),dtyp

  • 我正在尝试将量化图形加载到Android应用程序中。我的构建文件包含 额外的量化deps用于独立的C构建。 由于GEMMLOWP中存在大量错误,我无法使用Bazel进行编译。在Android中包含gemmlowp和量化操作的正确方式是什么? 下面是一个错误示例: 这是在Ubuntu 16.04和Bazel 0.3.0上。 这里有一个要点,它有两次连续尝试构建包的输出——第一次在highwayhas