zoukankan      html  css  js  c++  java
  • tf.expand_dims 来增加维度

    主要是因为tflearn官方的例子总是有embeding层,去掉的话要conv1d正常工作,需要加上expand_dims

    network = input_data(shape=[None, 100], name='input')
    network = tf.expand_dims(network, 2)
    branch1 = conv_1d(network, 128, 3, padding='valid', activation='relu', regularizer="L2")

    ref:https://stackoverflow.com/questions/49592771/tflearn-classification-with-cnn-conv-1d

    from: https://blog.csdn.net/jasonzzj/article/details/60811035
    TensorFlow中,想要维度增加一维,可以使用tf.expand_dims(input, dim, name=None)函数。当然,我们常用tf.reshape(input, shape=[])也可以达到相同效果,但是有些时候在构建图的过程中,placeholder没有被feed具体的值,这时就会包下面的错误:TypeError: Expected binary or unicode string, got 1
    在这种情况下,我们就可以考虑使用expand_dims来将维度加1。比如我自己代码中遇到的情况,在对图像维度降到二维做特定操作后,要还原成四维[batch, height, width, channels],前后各增加一维。如果用reshape,则因为上述原因报错

    one_img2 = tf.reshape(one_img, shape=[1, one_img.get_shape()[0].value, one_img.get_shape()[1].value, 1])

    用下面的方法可以实现:

    one_img = tf.expand_dims(one_img, 0)
    one_img = tf.expand_dims(one_img, -1) #-1表示最后一维

    在最后,给出官方的例子和说明

    # 't' is a tensor of shape [2]
    shape(expand_dims(t, 0)) ==> [1, 2]
    shape(expand_dims(t, 1)) ==> [2, 1]
    shape(expand_dims(t, -1)) ==> [2, 1]

    # 't2' is a tensor of shape [2, 3, 5]
    shape(expand_dims(t2, 0)) ==> [1, 2, 3, 5]
    shape(expand_dims(t2, 2)) ==> [2, 3, 1, 5]
    shape(expand_dims(t2, 3)) ==> [2, 3, 5, 1]

    Args:
    input: A Tensor.
    dim: A Tensor. Must be one of the following types: int32, int64. 0-D (scalar). Specifies the dimension index at which to expand the shape of input.
    name: A name for the operation (optional).

    Returns:
    A Tensor. Has the same type as input. Contains the same data as input, but its shape has an additional dimension of size 1 added.

  • 相关阅读:
    自然语言处理NLP快速入门
    2019年机器学习:追踪人工智能发展之路
    中科院院士谭铁牛:人工智能发展需要理性务实
    SAP MM ME21N 创建PO时报错
    最全的机器学习资料
    SAP MM盘点流程里如何处理事务代码MI11 Recount过的盘点凭证?
    如何“快”、“准”、“狠”成为优秀算法工程师
    解码以色列人工智能产业:正在崛起的竞争者
    周志华:关于机器学习的一点思考
    projects
  • 原文地址:https://www.cnblogs.com/bonelee/p/10341443.html
Copyright © 2011-2022 走看看