- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Keras 模型可以通过函数式 API 用作 Tensor 上的 Tensorflow 函数,如所述 here .
所以我们可以这样做:
from keras.layers import InputLayer
a = tf.placeholder(dtype=tf.float32, shape=(None, 784))
model = Sequential()
model.add(InputLayer(input_tensor=a, input_shape=(None, 784)))
model.add(Dense(32, activation='relu'))
model.add(Dense(10, activation='softmax'))
output = model.output
哪个是张量:
<tf.Tensor 'dense_24/Softmax:0' shape=(?, 10) dtype=float32>
但是,这也可以在没有任何 InputLayer
的情况下工作:
a = tf.placeholder(dtype=tf.float32, shape=(None, 784))
model = Sequential()
model.add(Dense(32, activation='relu', input_shape=(784,)))
model.add(Dense(10, activation='softmax'))
output = model(a)
有效,output
与之前的形状相同:
<tf.Tensor 'sequential_9/dense_22/Softmax:0' shape=(?, 10) dtype=float32>
我假设第一种形式允许:
inputs
和outputs
明确附加为模型的属性(同名),以便我们可以在别处重用它们。例如与其他 TF 行动。_keras_history
)将作为输入给出的张量转换为 Keras 输入。但这不是我们不能用第二种形式做的事情,那么,InputLayer
(和Input
更不用说)是否有特殊用法(除了多个输入)?
此外,InputLayer
很棘手,因为它使用的 input_shape
与其他 keras 层不同:我们指定批量大小(此处为 None
),这不是通常情况下...
最佳答案
InputLayer
似乎有一些用途:
首先,它允许您按原样提供纯 tensorflow 张量,而无需指定它们的形状。例如。你可以写
model.add(InputLayer(input_tensor=a))
这有几个显而易见的原因,其中包括减少重复。
其次,它们允许您使用单个输入编写非顺序网络,例如
input
/ \
/ \
/ \
conv1 conv2
| |
如果没有 InputLayer
,您需要显式地为 conv1
和 conv2
提供相同的张量,或者在模型之上创建任意标识层.两者都不太令人满意。
最后,他们消除了“也是输入的层”和“普通层”之间的任意区别。如果您使用 InputLayer
,您可以编写代码,明确区分输入层和执行某项操作的层。这提高了代码的可读性并使重构变得更加容易。例如,替换第一层变得和替换任何其他层一样容易,您不需要考虑 input_shape
。
关于python - 在带有 Tensorflow 张量的 Keras 模型中使用 InputLayer(或 Input)有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45217973/
我正在使用简单的猫与狗数据集在 Google Colab 上尝试新添加的 TPU 支持。 在创建了一个简单的 CNN 之后,我尝试将模型导出到 TPU。但它因错误而失败 TypeError: Chec
我想从另一个 CNN 构建一个 CNN 来提取图像的特征向量。这个想法只是采用第一个 CNN 的前 13 层并用这些层构建第二个。 我正在使用配备 GPU 的 Google Colab 笔记本 fro
我遇到以下错误:https://pastebin.com/X7146Ury运行此 script 时. AttributeError: 'InputLayer' object has no attrib
我应该什么时候使用 Input我什么时候应该使用 InputLayer ?在 source code有一个描述,但我不确定它是什么意思。 输入层: Layer to be used as an ent
尝试将我的 Keras 模型转换为 CoreML 模型时,出现错误“InputLayer 对象没有属性‘inbound_nodes’”。 这是我的代码: loaded_model = loa
Keras 模型可以通过函数式 API 用作 Tensor 上的 Tensorflow 函数,如所述 here . 所以我们可以这样做: from keras.layers import InputL
我是机器学习新手。我正在关注这个tutorial关于微调 VGG16 模型。 使用以下代码可以很好地加载模型: vgg_model = tensorflow.keras.applications.vg
我试图理解 Sequential API(即 Sequential())和 Function API(即 Model())之间的关系,用于在Keras。特别是,我对使用 Function API 生成
我对 keras 和 TensorFlow 非常陌生, 当尝试将 Keras 模型(在新的 iOS IA 框架上编译并正常工作)转换为要在 Android 中使用的 tensorflow 模型时,我缺
我正在尝试将 vgg16 层添加到顺序模型,但出现问题标题中提到的错误 from keras.applications.vgg16 import VGG16 from tensorflow.contr
我是一名优秀的程序员,十分优秀!