小编Lin*_*gxB的帖子

Keras多输入AttributeError:“ NoneType”对象没有属性“ inbound_nodes”

我正在尝试建立下图所示的模型。想法是采用多个分类特征(单热矢量)并将其分别嵌入,然后将这些嵌入的矢量与3D张量组合以用于LSTM。

使用Keras2.0.2中的以下代码,在创建Model()具有多个输入的对象时,会引发AttributeError: 'NoneType' object has no attribute 'inbound_nodes'类似于问题的问题。谁能帮助我找出问题所在?

模型:

模型

码:

from keras.layers import Dense, LSTM, Input
from keras.layers.merge import concatenate
from keras import backend as K
from keras.models import Model

cat_feats_dims = [315, 14] # Dimensions of the cat_feats
emd_inputs = [Input(shape=(in_size,)) for in_size in cat_feats_dims]
emd_out = concatenate([Dense(20, use_bias=False)(inp) for inp in emd_inputs])
emd_out_3d = K.repeat(emd_out, 10)

lstm_input = Input(shape=(10,5))

merged = concatenate([emd_out_3d,lstm_input])

lstm_output = LSTM(32)(merged)
dense_output = Dense(1, activation='linear')(lstm_output)

model …
Run Code Online (Sandbox Code Playgroud)

python deep-learning keras keras-2

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

微调Word嵌入如何工作?

我一直在阅读一些带有深度学习论文的NLP,并发现微调似乎是一个简单但却令人困惑的概念.这里提出了同样的问题,但仍然不太清楚.

Y. Kim,"用于句子分类的卷积神经网络"KS Tai,R.Socher,以及CD Manning,"改进树的语义表示"等论文所述,将预训练的单词嵌入微调到特定于任务的单词嵌入.- 结构化的长期短期记忆网络,"只是简单地提一下,没有详细说明.

我的问题是:

使用word2vec或Glove生成的Word嵌入作为预训练的单词向量用作(X)下游任务的输入要素,如解析或情感分析,这意味着那些输入向量插入到某个特定任务的新神经网络模型中,同时训练这个新模型,不知何故我们可以获得更新的特定于任务的单词嵌入.

但据我所知,在训练过程中,反向传播的作用是更新(W)模型的权重,它不会改变输入特征(X),那么原始单词嵌入的精确程度如何?这些微调的载体来自哪里?

machine-learning deep-learning word-embedding

6
推荐指数
1
解决办法
3122
查看次数

如何在张量流中用 3d 张量对 2d 张量进行 matmul?

numpy可以乘以一个三维阵列作为例子下面的2D阵列:

>>> X = np.random.randn(3,5,4) # [3,5,4]
... W = np.random.randn(5,5) # [5,5]
... out = np.matmul(W, X) # [3,5,4]
Run Code Online (Sandbox Code Playgroud)

从我的理解,np.matmul()需要W和沿的第一维播放它X。但在tensorflow它是不允许的:

>>> _X = tf.constant(X)
... _W = tf.constant(W)
... _out = tf.matmul(_W, _X)

ValueError: Shape must be rank 2 but is rank 3 for 'MatMul_1' (op: 'MatMul') with input shapes: [5,5], [3,5,4].
Run Code Online (Sandbox Code Playgroud)

那么,有没有什么等效np.matmul()上面呢tensorflowtensorflow将 2d 张量与 3d 张量相乘的最佳实践是什么?

python tensorflow

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

Octave在某些情况下替换向量中的元素

我有两个向量如下:

p = zeros(5,1);
hx = [0.1; 0.3; 0.7; 0.9; 0.2];
Run Code Online (Sandbox Code Playgroud)

任务是将pfrom 0中的1元素替换为if中的元素hx >=0.5.成果输出:

p =

   0
   0
   1
   1
   0
Run Code Online (Sandbox Code Playgroud)

它可以通过下面的代码来实现,我不明白的是:作为pos = find(hx >= 0.5);2D矢量,如何理解p(pos,1)=1;?最后一行代码如何知道哪个索引p对应于正确的元素pos?这两者之间似乎没有明显的联系.另一方面,如何通过for循环和if语句来完成?

pos = find(hx >= 0.5);  
p(pos,1)=1; 
Run Code Online (Sandbox Code Playgroud)

matlab octave

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

XGBRegressor:改变random_state无效

xgboost.XGBRegressor似乎产生尽管新的随机种子被赋予了相同的结果.

根据xgboost文件xgboost.XGBRegressor:

seed:int随机数种子.(已弃用,请使用random_state)

random_state:int随机数种子.(取代种子)

random_state是要使用的一个,但是,不管是什么random_state或者seed我用的,该模型产生相同的结果.一个Bug?

from xgboost import XGBRegressor
from sklearn.datasets import load_boston
import numpy as np
from itertools import product

def xgb_train_predict(random_state=0, seed=None):
    X, y = load_boston(return_X_y=True)
    xgb = XGBRegressor(random_state=random_state, seed=seed)
    xgb.fit(X, y)
    y_ = xgb.predict(X)
    return y_

check = xgb_train_predict()

random_state = [1, 42, 58, 69, 72]
seed = [None, 2, 24, 85, 96]

for r, s in product(random_state, seed):
    y_ = xgb_train_predict(r, s)
    assert np.equal(y_, check).all() …
Run Code Online (Sandbox Code Playgroud)

python-3.x xgboost

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

将Dictionary中的键组合成列表中的元组

我正在寻找一种解决方案,根据列表作为值搜索字典中的键,然后将键附加到元组列表.我能够搜索正确的密钥但无法找到构建我期望的列表的方法.感谢善意的帮助.

如下所示,我想找到d其中值等于列表中元素的l所有键,并进一步将所有搜索到的键放入元组列表中,如预期输出中所示.

d = {'acutrar': 'acutrar',
 'aguosa': 'aguoso',
 'capitalizareis': 'capitalizar',
 'conocerán': 'conocer',
 'conociéremos': 'conocer',
 'conocían': 'conocer',
 'conocías': 'conocer',
 'conozcas': 'conocer',
 'pales': 'palar',
 'planeareis': 'planear',
 'planearás': 'planear',
 'planeasteis': 'planear',
 'planeáramos': 'planear'}

l = ['conocer', 'NOT FOUND', 'NOT FOUND', 'planear']

for word in l:
    for (x,y) in d.items():
        if y == word:
            print(word, x) #I can only search for the keys but don't know how to build that list of tuples
Run Code Online (Sandbox Code Playgroud)

预期产出:

[('conocerán','conocías','conozcas','conocían','conociéremos'),('NOT FOUND'),('NOT FOUND'),('planeáramos','planeareis','planearás','planeasteis')]
Run Code Online (Sandbox Code Playgroud)

python dictionary tuples list

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