标签: keras-layer

如何给keras中间层输入

我想在弹出最后一层然后添加 2 FC(密集)层后使用预训练的 vgg-19。我想为这些 FC 层之一提供一个二进制变量(男性或女性)的输入。我怎样才能实现它。

keras keras-layer

3
推荐指数
1
解决办法
2146
查看次数

ValueError: Input 0 is incompatible with layer lstm_1: expected ndim=3, found ndim=2 [keras]

我收到错误:ValueError: Input 0 is incompatible with layer lstm_1: expected ndim=3, found ndim=2使用以下代码:

def make_model():
  model = Sequential()      

  model.add(Conv2D(20,(5,5), input_shape = (24,48,30), activation = "relu", strides = 1, padding = "valid"))
  model.add(MaxPooling2D(pool_size=(2,2)))        
  model.add(Conv2D(50, (5,5), use_bias = 50))    
  model.add(MaxPooling2D(pool_size=(2,2)))    
  model.add(Flatten())
  model.add(Dense(20, activation = "relu"))
  model.add(LSTM(50, activation="relu", return_sequences=True))

  return model
Run Code Online (Sandbox Code Playgroud)

我的输入是 30 个大小为 24*48 的矩阵。

machine-learning keras recurrent-neural-network keras-layer

3
推荐指数
1
解决办法
7928
查看次数

在 Keras 中使用减法层

我正在 Keras 中实现这里描述的 LSTM 架构。我想我真的很接近,尽管我仍然对共享层和特定于语言的层的组合有疑问。这是公式(大约):y = g * y^s + (1 - g) * y^u

这是我试过的代码:

### Linear Layers ###
univ_linear = Dense(50, activation=None, name='univ_linear')
univ_linear_en = univ_linear(en_encoded)
univ_linear_es = univ_linear(es_encoded)
print(univ_linear_en)

# Gate >> g
gate_en = Dense(50, activation='sigmoid', name='gate_en')(en_encoded)
gate_es = Dense(50, activation='sigmoid', name='gate_es')(es_encoded)
print(gate_en)
print(gate_es)

# EN >> y^s
spec_linear_en = Dense(50, activation=None, name='spec_linear_en') (en_encoded)
print(spec_linear_en)

# g * y^s
gated_spec_linear_en = Multiply()([gate_en, spec_linear_en])
print(gated_spec_linear_en)

# ES >> y^s
spec_linear_es = Dense(50, activation=None, name='spec_linear_es')(es_encoded) …
Run Code Online (Sandbox Code Playgroud)

python machine-learning lstm keras keras-layer

3
推荐指数
1
解决办法
2071
查看次数

tensorflow.keras 无法导入激活

刚刚通过以下方式安装了 tensorflow-gpu:

conda install --yes tensorflow-gpu==1.12.0

现在,当我遇到from tensorflow.keras import layers错误时:

导入错误:无法导入名称“激活”

我尝试删除 tf 和 keras 然后重新安装 tf,但没有帮助。

importerror keras tensorflow keras-layer

3
推荐指数
1
解决办法
5345
查看次数

设置 Keras 模型可训练与使每一层可训练有什么区别

我有一个由一些密集层组成的 Keras Sequential 模型。我将整个模型的可训练属性设置为 False。但是我看到各个层的可训练属性仍然设置为 True。我是否需要单独将图层的可训练属性也设置为 False?那么在整个模型上将trainable property设置为False是什么意思呢?

python machine-learning backpropagation keras keras-layer

3
推荐指数
1
解决办法
708
查看次数

Keras 层构建错误:build() 需要 1 个位置参数,但给出了两个

我在这个简单的层中出现以下错误:

class MyLayer(Layer):

def __init__(self):
    super(MyLayer, self).__init__()

def build(self):
    # Create a trainable weight variable for this layer.
    self.kernel = self.add_weight(name='kernel', 
                                  shape=(1)
                                  trainable=True)
    super(MyLayer, self).build() 

def call(self, x):
    return x/self.kernel
Run Code Online (Sandbox Code Playgroud)

当我将它用作:

m = MyLayer()
t = m (input)
Run Code Online (Sandbox Code Playgroud)

错误:build() 采用一个位置参数,但给出了两个。

python keras tensorflow keras-layer tf.keras

3
推荐指数
1
解决办法
1350
查看次数

keras :将层添加到另一个模型

我需要向现有模型添加图层。但是,我需要在“主模型级别”添加层,即我不能使用经典的函数方法。例如,如果我使用类似的东西:

from keras.layers import Dense,Reshape, Input
inp = Input(shape=(15,))
d1 = Dense(224*224*3, activation='linear')(inp)
r1 = Reshape(input_shape)
from keras import Model
model_mod = r1(d1)
model_mod = mobilenet(model_mod)
model_mod = Model(inp, model_mod)
Run Code Online (Sandbox Code Playgroud)

我获得:

Layer (type)                 Output Shape              Param #   
=================================================================
input_5 (InputLayer)         (None, 15)                0         
_________________________________________________________________
dense_4 (Dense)              (None, 150528)            2408448   
_________________________________________________________________
reshape_4 (Reshape)          (None, 224, 224, 3)       0         
_________________________________________________________________
mobilenet_1.00_224 (Model)   (None, 1000)              4253864 
Run Code Online (Sandbox Code Playgroud)

所以,我获得了一个带有嵌套子模型的模型。相反,我会将嵌套子模型的层(mobilenet)“添加”到新的顶层(即在 reshape_4 之后)。我试过:

modelB_input = modelB.input
for layer in modelB.layers:
    if layer == modelB_input:
        continue
    modelA.add(layer)  
Run Code Online (Sandbox Code Playgroud)

它适用于简单的顺序模型(例如,vgg、mobilenet),但对于连接不是严格顺序的更复杂的模型(例如,inception、resnet),此代码并不好。有任何想法吗?

neural-network keras keras-layer tf.keras

3
推荐指数
2
解决办法
1534
查看次数

modulenot 找到 'keras.layer.embeddings' 即使我正确安装了 keras,我也不知道如何解决这个问题

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
 import seaborn as sns
%matplotlib inline
from wordcloud import WordCloud

from bs4 import BeautifulSoup  
import re
import nltk
from nltk.corpus import stopwords 
from nltk.stem.porter import PorterStemmer
from nltk.stem import SnowballStemmer, WordNetLemmatizer
from nltk import sent_tokenize, word_tokenize, pos_tag


from keras.preprocessing import sequence
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation, Lambda
from keras.layers.embeddings import Embedding
from keras.layers.recurrent import LSTM, SimpleRNN, GRU
from keras.preprocessing.text …
Run Code Online (Sandbox Code Playgroud)

python sentiment-analysis keras jupyter-notebook keras-layer

3
推荐指数
1
解决办法
5773
查看次数

在NN中指定连接(在keras中)

我正在使用keras和tensorflow 1.4。

我想明确指定两层之间连接的神经元。因此,每当第一层中的神经元i与第二层中的神经元j连接且在其他位置为零时,我就有一个矩阵A。

我的第一个尝试是创建一个带有内核的自定义层,该内核的大小与A相同,其中包含不可训练的零,其中A包含零,可训练的权重,其中A包含一个零。这样,所需的输出将是一个简单的点积。不幸的是,我没有设法弄清楚如何实现部分可训练和部分不可训练的内核。

有什么建议么?

(用很多神经元通过手工连接建立功能模型可能是一种解决方法,但是某种程度上是“丑陋”的解决方案)

keras tensorflow keras-layer

2
推荐指数
1
解决办法
1185
查看次数

构建keras模型

我不明白这段代码中发生了什么:

def construct_model(use_imagenet=True):
    # line 1: how do we keep all layers of this model ?
    model = keras.applications.InceptionV3(include_top=False, input_shape=(IMG_SIZE, IMG_SIZE, 3),
                                          weights='imagenet' if use_imagenet else None) # line 1: how do we keep all layers of this model ?

    new_output = keras.layers.GlobalAveragePooling2D()(model.output)

    new_output = keras.layers.Dense(N_CLASSES, activation='softmax')(new_output)
    model = keras.engine.training.Model(model.inputs, new_output)
    return model
Run Code Online (Sandbox Code Playgroud)

具体来说,当我们调用最后一个构造函数时,我的困惑是

model = keras.engine.training.Model(model.inputs, new_output)
Run Code Online (Sandbox Code Playgroud)

我们指定输入层和输出层,但它如何知道我们希望所有其他层保留?

换句话说,我们将new_output层附加到我们在第1行加载的预训练模型,即new_output层,然后在最终构造函数(最后一行)中,我们只创建并返回具有指定输入的模型,输出图层,但它如何知道我们想要的其他图层?

问题1):keras.engine.training.Model和keras.models.Model有什么区别?

问题2):当我们做new_layer = keras.layers.Dense(...)(prev_layer)时到底发生了什么?()操作是否返回新图层,它究竟做了什么?

python neural-network deep-learning keras keras-layer

2
推荐指数
1
解决办法
703
查看次数