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

如何在Keras/TensorFlow中向张量重新引入(无,)批维数?

彭海阳
2023-03-14

Tensorflow版本:1.12 Keras版本:2.2.4 OS:Debian Linux(VM实例)Python版本:2.7

我试过:1。用[None,299,299,3]以及[-1,299,299,3]重塑()。两者都不按要求工作

img_height=299
img_width=299
inputs = Input(shape=[1],dtype=tf.string)
inputs_inter1 = Lambda(preprocess_input, output_shape=(img_height,img_width,3))(inputs)
print(inputs_inter1.shape)

print("Combining with string vector input")
combine_out = trainedmodel(inputs_inter1)     
Combinedmodel = Model(inputs,combine_out)
input_tensor = Combinedmodel.inputs[0]
output_tensor = Combinedmodel.outputs[0]
print("Inputs: "+str(input_tensor))
print("Outputs: "+str(output_tensor))
def preprocess_input(x):

    import tensorflow as tf

    x=tf.reshape(x,())
    x = tf.image.decode_jpeg(x,channels=3)
    x = tf.image.resize_images(x,(299,299))
    x = tf.cast(x, tf.float32)
    x = tf.math.divide(x, 255.0)
    x = tf.math.subtract(x, 0.5)
    x = tf.math.multiply(x, 2.0)
    x = tf.expand_dims(x,0)    
return x

预期结果:

共有1个答案

仰经武
2023-03-14

回答我自己的问题。

诀窍是创建一个具有所需维度[None,299,299,3]的新占位符,将预处理的张量复制到其中,并从Lambda函数/层返回该占位符。

def preprocess_input(x):

    import tensorflow as tf

    x=tf.reshape(x,())
    x = tf.image.decode_jpeg(x,channels=3)
    x = tf.image.resize_images(x,(299,299))
    x = tf.cast(x, tf.float32)
    x = tf.math.divide(x, 255.0)
    x = tf.math.subtract(x, 0.5)
    x = tf.math.multiply(x, 2.0)

    x = tf.placeholder_with_default(x,[None,299,299,3])

    return x

关于tf.placeholder_with_default的用法,可以在下面找到:https://www.tensorflow.org/api_docs/python/tf/placeholder_with_default

 类似资料:
  • 问题内容: 由于我需要在使用Tensorflow训练模型之前为数据编写一些预处理程序,因此需要对进行一些修改。但是,我不知道如何像使用一样修改值。 最好的方法是可以直接修改。但是,在当前版本的Tensorflow中似乎不可能。另一种方法是改变到该进程,然后用改回来。 关键是如何更改为。 1):https : //www.tensorflow.org/versions/r0.8/api_docs/p

  • 我想使用两个包,一个用Keras1.2编写,另一个用TensorFlow编写。我想将构建在tensorflow中的体系结构的一部分用于Keras模型。 这里提出了一个部分的解决方案,但它是针对顺序模型的。关于功能模型的建议--将预处理包装在一个Lambda层中--没有奏效。

  • 本文向大家介绍tensorflow多维张量计算实例,包括了tensorflow多维张量计算实例的使用技巧和注意事项,需要的朋友参考一下 两个三维矩阵的乘法怎样计算呢?我通过实验发现,tensorflow把前面的维度当成是batch,对最后两维进行普通的矩阵乘法。也就是说,最后两维之前的维度,都需要相同。 首先计算shape为(2, 2, 3)乘以shape为(2, 3, 2)的张量。 运行结果:

  • 问题内容: 我是TensorFlow的新手。在阅读现有文档时,我发现该术语确实令人困惑。因此,我需要澄清以下问题: 和, vs. ,’张量’vs.之间是什么关系? 它们都是张量类型吗? 问题答案: TensorFlow没有一流的Tensor对象,这意味着在运行时执行的基础图中没有任何概念。相反,该图由相互连接的op节点组成,代表操作。操作分配内存的输出,这些都可以在端点上,等等,你可以认为这些端点

  • 本文向大家介绍如何批量引入组件?相关面试题,主要包含被问及如何批量引入组件?时的应答技巧和注意事项,需要的朋友参考一下 vue中全局和局部引入批量组件方法 一、全局批量引入 创建一个.js文件,并在main.js中引入即可。 二、局部批量引入 三、动态组件使用方法 使用标签保存状态,即切换组件再次回来依然是原来的样子,页面不会刷新,若不需要可以去掉。 通过事件改变is绑定的isWhich值即可切换

  • 根据keras文件(https://keras.io/layers/convolutional/)Conv1D输出张量的形状为(batch\u size,new\u steps,filters),而输入张量的形状为(batch\u size,steps,input\u dim)。我不明白这是怎么回事,因为这意味着如果你传递一个长度为8000的1d输入,其中batch\u size=1,steps=