- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了以下脚本,用于读取 CNN-RNN-FCN NN 架构的 yaml
规范并构建相应的 Keras 模型:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Oct 27 10:22:03 2018
@author: jsevillamol
"""
import yaml, argparse
from contextlib import redirect_stdout
from tensorflow.python.keras.models import Model
from tensorflow.python.keras.layers import Input
from tensorflow.python.keras.layers import Conv2D, MaxPooling2D, Flatten
from tensorflow.python.keras.layers import TimeDistributed, LSTM
from tensorflow.python.keras.layers import Dense
from tensorflow.python.keras.layers import BatchNormalization, Dropout
def build_model(
input_shape,
num_classes,
data_type,
activation_function,
dropout_rate,
use_batchnorm,
cnn_layers,
lstm_units,
concat_lstm_output,
fcn_layers):
"""
Builds a CNN-RNN-FCN model according to some specs
"""
# Build a model with the functional API
inputs = Input(input_shape)
x = inputs
# CNN feature extractor
for i, cnn_layer in enumerate(cnn_layers):
# Extract layer params
filters = cnn_layer['filters']
kernel_size = cnn_layer['kernel_size']
use_maxpool = cnn_layer['use_maxpool']
# build cnn_layer
x = TimeDistributed(Conv2D(
filters,
kernel_size,
strides=(1, 1),
padding='same',
data_format=None,
dilation_rate=(1, 1),
activation=activation_function,
use_bias=True,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None
), name=f'conv2D_{i}')(x)
if use_batchnorm:
x = TimeDistributed(BatchNormalization(
axis=-1,
momentum=0.99,
epsilon=0.001,
center=True,
scale=True,
beta_initializer='zeros',
gamma_initializer='ones',
moving_mean_initializer='zeros',
moving_variance_initializer='ones',
beta_regularizer=None,
gamma_regularizer=None,
beta_constraint=None,
gamma_constraint=None
), name=f'batchnorm_{i}')(x)
# add maxpool if needed
if use_maxpool:
x = TimeDistributed(MaxPooling2D(
pool_size=(2, 2),
strides=None,
padding='valid',
data_format=None
), name=f'maxpool_{i}')(x)
x = TimeDistributed(Flatten(), name='flatten')(x)
x = TimeDistributed(Dropout(dropout_rate), name='dropout')(x)
# LSTM feature combinator
x = LSTM(
lstm_units,
activation='tanh',
recurrent_activation='hard_sigmoid',
use_bias=True,
kernel_initializer='glorot_uniform',
recurrent_initializer='orthogonal',
bias_initializer='zeros',
unit_forget_bias=True,
kernel_regularizer=None,
recurrent_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
recurrent_constraint=None,
bias_constraint=None,
dropout=dropout_rate,
recurrent_dropout=0.0,
implementation=1,
return_sequences=concat_lstm_output,
return_state=False,
go_backwards=False,
stateful=False,
unroll=False
)(x)
if concat_lstm_output:
x = Flatten()(x)
# FCN classifier
for fcn_layer in fcn_layers:
# extract layer params
units = fcn_layer['units']
# build layer
x = Dense(
units,
activation=activation_function,
use_bias=True,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None
)(x)
x = Dropout(dropout_rate)(x)
prediction = Dense(num_classes, activation='softmax')(x)
# Build model
model = Model(inputs=inputs, outputs=prediction)
return model
if __name__=="__main__":
# parser options
parser = argparse.ArgumentParser(
description=("Build a customized cnn-rnn keras model with ctalearn."))
parser.add_argument(
'config_file',
help="path to YAML file containing a training configuration")
args = parser.parse_args()
# load config file
with open(args.config_file, 'r') as config_file:
config = yaml.load(config_file)
model = build_model(**config['model_config'])
# Show model summary through console and then save it to file
model.summary()
with open('model_summary.txt', 'w') as f:
with redirect_stdout(f):
model.summary()
# save model architecture to disk in .h5 format
model.save('untrained_model.h5', include_optimizer=False)
我想向程序添加一个新功能,该功能将允许构建接受形状为(img_length, img_height, n_channels)
作为输入示例的模型,即每个示例一个图像,而不是当前的序列。
为此,如果能够在构建模型的 CNN 部分后立即应用 TimeDistributed
包装器,那就太棒了,这样我就不必在各处添加大量条件。
我怎样才能做到这一点?
最佳答案
单个图像可以被视为长度为一的序列。因此,您可以通过简单的检查并使用 Reshape
层轻松完成此操作:
inputs = Input(input_shape)
x = inputs
# if the input is a single image,
# reshape it to a sequence of length one
if len(input_shape) == 3:
x = Reshape((1,) + input_shape)(x)
# the rest is the same
关于python - TimeDistributed 一次多个层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53905927/
我编写了以下脚本,用于读取 CNN-RNN-FCN NN 架构的 yaml 规范并构建相应的 Keras 模型: #!/usr/bin/env python3 # -*- coding: utf-8
我有一个预训练模型,其中包含多个具有不同形状的输入。所以我可以在具有匹配形状的新输入上调用模型,如下所示: new_output = model([input_1, input2]) 与 input_
来自 keras docs : 然后,您可以使用 TimeDistributed 将 Dense 层独立应用于 10 个时间步长中的每一个: # as the first layer in a mod
举例来说,我有一个输入,其中包含2张图像,总形状为(2,299,299,3)。我正在尝试在每个图像上应用inceptionv3,然后随后使用LSTM处理输出。我正在使用 mask 层将空白图像排除在处
我有一个简单的序列模型,使用 TimeDistributed(Dense...) 作为 LSTM 层之后的最后一层。我正在以 20 个时间步长的顺序训练时间序列数据。损失函数是Mean Absolut
BatchNormalization 和 TimeDistributed(BatchNormalization) 是否对顺序数据(例如视频)有相同的影响?如果不是有什么区别? 最佳答案 在 tf.ke
我正在尝试使以下代码行正常工作: low_encoder_out = TimeDistributed( AutoregressiveDecoder(...) )([X_tf, embeddings])
我目前正在使用 Keras 开发 LSTM,并且对 TimeDistributed 层有疑问。 假设我有一个 TimeDistributed 层,它接受诸如 (batch_size,timesteps
我试图了解 TimeDistributed 层在 keras/tensorflow 中的使用。我已经阅读了一些主题和文章,但仍然没有正确理解。 让我对 TImeDistributed 层的作用有一些了
我已经完成了 official documentation但仍然无法理解 TimeDistributed 作为 Keras 模型中的层实际上做了什么? 我无法理解 TimeDistributed 和
我正在尝试了解 TimeDistributed 包装器在 Keras 中的作用。 我知道 TimeDistributed “将一个层应用于输入的每个时间切片。” 但是我做了一些实验,得到了我无法理解的
我创建了一个 CNN-LSTM 用于网络 session 的生存预测,我的训练数据如下所示: print(x_train.shape) (288, 3, 393) 使用(样本、时间步长、特征)和我的模
我的输入状态形状= (84,84,4) state = Input(shape=(84,84,4), dtype="float") 所以我想将其传递给时间步长大小=1..5(范围为1到5)的某个Tim
这是我的问题,我想在 TimeDistributed 层中使用预训练 CNN 网络之一。但是我在实现它时遇到了一些问题。 这是我的模型: def bnn_model(max_len): # s
我知道这个主题有很多问题,但我不明白为什么在我的情况下这两种选择都是可能的。我在 LSTM 中的输入形状是 (10,24,2),我的 hidden_size 是 8。 model = Sequen
这是我的尝试: inputs = Input(shape=(config.N_FRAMES_IN_SEQUENCE, config.IMAGE_H, config.IMAGE_W, config.N_
我正在尝试更好地理解 Keras 层。我正在研究一个序列到序列模型,我在其中嵌入一个句子并将其传递给返回序列的 LSTM。此后,我想将 Dense 层应用于句子中的每个时间步长(单词),并且 Time
抱歉,我是 RNN 的新手。我读过this post在 TimeDistributed 层上。 我已将数据 reshape 为 Keras 要求的 [samples, time_steps, feat
我一直在尝试对 machinelearningmastery 中显示的 LSTM 模型的输出实现注意力包装器教程: from numpy import array from keras.models
我正在尝试构建一个可以在音频和视频样本上进行训练的模型,但出现此错误 ValueError:请使用“Layer”实例初始化“TimeDistributed”层。您传递了:Tensor("input_1
我是一名优秀的程序员,十分优秀!