标签: keras-layer

TimeDistributed与TimeDistributedDense Keras

我已经阅读了官方文档,但仍然无法理解TimeDistributedKeras模型中的实际作用是什么?

我不明白之间的差别TimeDistributedTimeDistributedDense?有人会TimeDistributedDense什么时候使用?它只是为了减少训练数据集吗?它有其他好处吗?

任何人都可以用一个精确的例子来解释这两种类型的包装器有什么作用?

python machine-learning neural-network keras keras-layer

13
推荐指数
1
解决办法
6267
查看次数

有人可以向我解释初始化keras lstm层时传递的激活和重复激活参数之间的区别吗?

有人可以向我解释初始化keras lstm层时传递的激活和重复激活参数之间的区别吗?

根据我的理解,LSTM有4层.如果我没有将任何激活参数传递给LSTM构造函数,请解释每个层的默认激活函数是什么?

lstm keras keras-layer

13
推荐指数
3
解决办法
3906
查看次数

在Keras中,如何获取与模型中包含的"Model"对象关联的图层名称?

我在初始基础上使用VGG16网络构建了一个Sequential模型,例如:

from keras.applications import VGG16
conv_base = VGG16(weights='imagenet',
                  # do not include the top, fully-connected Dense layers 
                  include_top=False,
                  input_shape=(150, 150, 3))

from keras import models
from keras import layers

model = models.Sequential()
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(256, activation='relu'))
# the 3 corresponds to the three output classes
model.add(layers.Dense(3, activation='sigmoid'))
Run Code Online (Sandbox Code Playgroud)

我的模型看起来像这样:

model.summary()
Run Code Online (Sandbox Code Playgroud)

Layer (type)                 Output Shape              Param #   
=================================================================
vgg16 (Model)                (None, 4, 4, 512)         14714688  
_________________________________________________________________
flatten_1 (Flatten)          (None, 8192)              0         
_________________________________________________________________
dense_7 (Dense)              (None, 256)               2097408   
_________________________________________________________________
dense_8 (Dense)              (None, 3) …
Run Code Online (Sandbox Code Playgroud)

keras keras-layer convolutional-neural-network

12
推荐指数
4
解决办法
2万
查看次数

如何从kera中的Conv2D正确获取图层权重?

我将Conv2D层定义为:

Conv2D(96, kernel_size=(5, 5),
             activation='relu',
             input_shape=(image_rows, image_cols, 1),
             kernel_initializer=initializers.glorot_normal(seed),
             bias_initializer=initializers.glorot_uniform(seed),
             padding='same',
             name='conv_1')
Run Code Online (Sandbox Code Playgroud)

这是我网络中的第一层.
输入尺寸为64 x 160,图像为1通道.
我试图从这个卷积层可视化权重,但不知道如何获得它们.
这是我现在这样做的方式:

1.Call

layer.get_weights()[0]
Run Code Online (Sandbox Code Playgroud)

这会形成一系列形状(5,5,1,96).1是因为图像是1通道.

2.使用5乘5过滤器

layer.get_weights()[0][:,:,:,j][:,:,0]
Run Code Online (Sandbox Code Playgroud)

非常难看,但我不知道如何简化这一点,任何评论都非常感激.

我不确定这些5乘5个方格.他们实际过滤了吗?
如果不是,请告诉我们如何正确地从模型中获取过滤器?

convolution keras keras-layer

11
推荐指数
1
解决办法
9382
查看次数

从预训练的 keras 模型中移除层提供与原始模型相同的输出

在一些特征提取实验中,我注意到“model.pop()”功能没有按预期工作。对于像 vgg16 这样的预训练模型,在使用 'model.pop()' 后,model.summary() 显示该层已被删除(预期有 4096 个特征),但是在将图像通过新模型时,结果相同特征数量(1000)作为原始模型。无论移除多少层,包括一个完全空的模型,它都会生成相同的输出。寻求您对可能出现的问题的指导。

#Passing an image through the full vgg16 model
model = VGG16(weights = 'imagenet', include_top = True, input_shape = (224,224,3))
img = image.load_img( 'cat.jpg', target_size=(224,224) )
img = image.img_to_array( img )
img = np.expand_dims( img, axis=0 )
img = preprocess_input( img )
features = model.predict( img )
features = features.flatten()
print(len(features)) #Expected 1000 features corresponding to 1000 imagenet classes
Run Code Online (Sandbox Code Playgroud)

1000

model.layers.pop()
img = image.load_img( 'cat.jpg', target_size=(224,224) )
img = image.img_to_array( img )
img …
Run Code Online (Sandbox Code Playgroud)

keras keras-layer keras-2

11
推荐指数
2
解决办法
8646
查看次数

Keras Concatenate Layers:不同类型的连接函数之间的区别

我刚刚开始玩Keras并开始制作自定义图层.但是,我对许多不同类型的图层感到困惑,这些图层的名称略有不同,但具有相同的功能.

例如,https://keras.io/layers/merge/https://www.tensorflow.org/api_docs/python/tf/keras/backend/concatenate有三种不同形式的连接函数.

keras.layers.Concatenate(axis=-1)
keras.layers.concatenate(inputs, axis=-1)
tf.keras.backend.concatenate()
Run Code Online (Sandbox Code Playgroud)

我知道第二个用于功能API,但3之间有什么区别?文档似乎有点不清楚.

此外,对于第三个,我看到了一个代码,在下面执行此操作.连接后为什么必须有._keras_shape行?

# Concatenate the summed atom and bond features
atoms_bonds_features = K.concatenate([atoms, summed_bond_features], axis=-1)

# Compute fingerprint
atoms_bonds_features._keras_shape = (None, max_atoms, num_atom_features + num_bond_features)
Run Code Online (Sandbox Code Playgroud)

最后,在keras.layers下,似乎总共有2个重复.例如,Add()和add()等.

python keras keras-layer

11
推荐指数
1
解决办法
5133
查看次数

如何使用自定义优化器加载 keras 保存的模型

我已经使用自定义优化器编译和训练了 keras 模型。我保存了模型,但是当我尝试加载模型时,它抛出一个错误,指出ValueError: Unknown optimizer: MyOptimizer. 我试图将 MyOptimizer 作为自定义对象传递,例如 :models.load_model('myModel.h5', custom_objects={'optimizer':MyOptimizer})并且它仍然抛出错误。如何使用自定义对象将模型加载到 keras 模型?

deep-learning keras tensorflow keras-layer keras-2

11
推荐指数
2
解决办法
2919
查看次数

具有线性激活的层和没有激活的层有什么区别?

我在玩 Keras 一点,我在想线性激活层和根本没有激活层之间有什么区别?它没有相同的行为吗?如果是这样,那么线性激活的意义何在?

我的意思是这两个代码片段之间的区别:

 model.add(Dense(1500))
 model.add(Activation('linear'))
 model.add(Dense(1500))
Run Code Online (Sandbox Code Playgroud)

 model.add(Dense(1500))
 model.add(Dense(1500))
Run Code Online (Sandbox Code Playgroud)

neural-network keras activation-function keras-layer

11
推荐指数
2
解决办法
6852
查看次数

如何从 .h5 文件正确加载带有自定义层的 Keras 模型?

我构建了一个带有自定义层的 Keras 模型,并.h5通过回调将其保存到一个文件中ModelCheckPoint。当我在训练后尝试加载此模型时,出现以下错误消息:

__init__() missing 1 required positional argument: 'pool_size'
Run Code Online (Sandbox Code Playgroud)

这是自定义层及其__init__方法的定义:

__init__() missing 1 required positional argument: 'pool_size'
Run Code Online (Sandbox Code Playgroud)

这就是我将此层添加到我的模型的方式:

class MyMeanPooling(Layer):
    def __init__(self, pool_size, axis=1, **kwargs):
        self.supports_masking = True
        self.pool_size = pool_size
        self.axis = axis
        self.y_shape = None
        self.y_mask = None
        super(MyMeanPooling, self).__init__(**kwargs)
Run Code Online (Sandbox Code Playgroud)

这是我加载模型的方式:

x = MyMeanPooling(globalvars.pool_size)(x)
Run Code Online (Sandbox Code Playgroud)

这些是完整的错误消息:

Traceback (most recent call last):
  File "D:/My Projects/Attention_BLSTM/script3.py", line 9, in <module>
    model = load_model(model_path, custom_objects={'MyMeanPooling': MyMeanPooling})
  File "D:\ProgramData\Anaconda3\envs\tf\lib\site-packages\keras\engine\saving.py", line 419, in load_model
    model = _deserialize_model(f, …
Run Code Online (Sandbox Code Playgroud)

python-3.x keras keras-layer

11
推荐指数
1
解决办法
4184
查看次数

如何在此 Tensorflow 模型中保存和加载 BatchNormalization Layer?

我正在尝试保存模型,然后加载它以做出一些预测;发生的情况是,训练后模型的准确度为95%+,但是当我保存它然后加载它时,准确度下降到几乎10%相同数据集。

要重现此错误结果,您可以运行以下命令非常小的笔记本。

该模型定义如下:

model_scratch_auto = models.Sequential()
model_scratch_auto.add(Flatten(input_shape=(28,28)))
model_scratch_auto.add(Dense(80, activation='relu'))
model_scratch_auto.add(Dense(100, activation='relu'))
model_scratch_auto.add(Dense(120, activation='relu'))
model_scratch_auto.add(Dense(100, activation='relu'))
auto_srelu=AutoSRELU()
model_scratch_auto.add(auto_srelu)
model_scratch_auto.add(Dense(120, activation='relu'))
model_scratch_auto.add(auto_srelu)
model_scratch_auto.add(BatchNormalization())
model_scratch_auto.add(Dense(10, activation='softmax'))
model_scratch_auto.compile(optimizer = tf.optimizers.Adam(),loss='categorical_crossentropy', metrics=['acc',f1_m,precision_m, recall_m])

model_scratch_auto.fit(X_train, y_train , batch_size=64, epochs=5, validation_data=(X_test, y_test),verbose=1)
Run Code Online (Sandbox Code Playgroud)

其中自定义层,AutoSRELU定义如下:

initializer0 = keras.initializers.RandomUniform(minval = -1, maxval =1)
initializer1 = keras.initializers.RandomUniform(minval = 0.5, maxval =3)

 
class MinMaxConstraint(keras.constraints.Constraint):
    def __init__(self, minval, maxval):
        self.minval = tf.constant(minval ,dtype='float32')
        self.maxval = tf.constant(maxval ,dtype='float32')
    def __call__(self, w):
        tf.cond(tf.greater(self.minval,w)
                , lambda: …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow keras-layer tf.keras

11
推荐指数
1
解决办法
1004
查看次数