标签: lstm

Keras LSTM在多类别分类中仅预测1个类别 - 如何修复?

我的文本数据集具有相同数量的标签 - 0,1,2,3,4.我使用我的数据集在他们的网站上运行了Keras binary classification示例LSTM(imdb示例),并将编译行更改为

"model.compile(loss='categorical_crossentropy', optimizer='adam', class_mode="categorical")"
Run Code Online (Sandbox Code Playgroud)

但该模型仅预测一个类别,即20%准确性.

你可以帮我修理一下/根据需要更改设置吗?

python neural-network lstm keras

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

在Python中从文本创建序列向量

我现在正在尝试为基于LSTM的NN准备输入数据.我有一些大量的文本文档,我想要的是为每个文档制作序列向量,以便我能够将它们作为列车数据提供给LSTM RNN.

我糟糕的做法:

import re
import numpy as np
#raw data
train_docs = ['this is text number one', 'another text that i have']

#put all docs together
train_data = ''
for val in train_docs:
    train_data += ' ' + val

tokens = np.unique(re.findall('[a-z?-?0-9]+', train_data.lower()))
voc = {v: k for k, v in dict(enumerate(tokens)).items()}
Run Code Online (Sandbox Code Playgroud)

然后brutforce用"voc"词典替换每个doc.

有没有可以帮助完成这项任务的库?

python word2vec lstm

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

类型错误:获取参数数组的类型无效 numpy.ndarray,必须是字符串或张量。(不能将 ndarray 转换为张量或运算。)

我试图在 siaseme LSTM 中重现结果以比较这里两个句子的语义相似性:- https://github.com/dhwajraj/deep-siamese-text-similarity

我正在使用 tensorflow 1.4 & python 2.7

train.py 工作正常。为了评估模型,我创建了一个 match_valid.tsv 文件,它是那里可用的“train_snli.txt”的子集。我修改了 input_helpers.py 文件中的 getTsvTestData 函数。

def getTsvTestData(self, filepath):
        print("Loading testing/labelled data from "+filepath+"\n")
        x1=[]
        x2=[]
        y=[]
        # positive samples from file
        for line in open(filepath):
            l=line.strip().split("\t")
            if len(l)<3:
                continue
            x1.append(l[1].lower()) # text
            x2.append(l[0].lower()) # text
            y.append(int(l[2])) # similarity score 0 or 1
        return np.asarray(x1),np.asarray(x2),np.asarray(y)
Run Code Online (Sandbox Code Playgroud)

我从 eval.py 中的这部分代码中收到错误

for db in batches:
            x1_dev_b,x2_dev_b,y_dev_b = zip(*db)
            #x1_dev_b = tf.convert_to_tensor(x1_dev_b,)
            print("type x1_dev_b {}".format(type(x1_dev_b))) # tuple
            print("type x2_dev_b {}".format(type(x2_dev_b))) # …
Run Code Online (Sandbox Code Playgroud)

python sentence-similarity lstm tensorflow

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

如何在神经网络的输出端执行诸如国际象棋移动合法性之类的规则?

我如何将规则(如国际象棋规则)应用于神经网络,以便网络不会预测/训练无效动作?

machine-learning neural-network lstm keras tensorflow

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

conv2d() 得到了一个意外的关键字参数“border_mode”

当我尝试使用 keras-2.1.3 和 theano-1.0.1 https://github.com/marcellacornia/sam/blob/master/attentive_convlstm.py运行此代码时

def get_initial_states(self, x):
    initial_state = K.sum(x, axis=1)
    initial_state = K.conv2d(initial_state, K.zeros((self.nb_filters_out, self.nb_filters_in, 1, 1)), border_mode='same')
    initial_states = [initial_state for _ in range(len(self.states))]

    return initial_states

Traceback (most recent call last):
  File "main.py", line 63, in <module>
    m = Model(input=[x, x_maps], output=sam_resnet([x, x_maps]))
  File "E:\sam-master\models.py", line 136, in sam_resnet
    nb_cols=3, nb_rows=3)(att_convlstm)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\topology.py", line 617, in __call__
    output = self.call(inputs, **kwargs)
  File "E:\sam-master\attentive_convlstm.py", line 143, in call
    initial_states = self.get_initial_states(x)
  File "E:\sam-master\attentive_convlstm.py", line 42, in get_initial_states …
Run Code Online (Sandbox Code Playgroud)

python theano lstm keras

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

在 Keras 中使用不同长度的时间序列训练 LSTM

我是 Keras 的新手,想知道如何使用不同长度的(中断)时间序列训练 LTSM。例如,考虑从第 1 天到第 10 天的连续系列和从第 15 天到第 20 天的另一个连续系列。简单地将它们连接到单个系列可能会产生错误的结果。我看到基本上有两种选择可以使它们成形(batch_size, timesteps, output_features)

  1. 通过一些默认值 (0) 扩展较短的系列,即对于上面的示例,我们将有以下批次:

    d1, ..., d10
    d15, ..., d20, 0, 0, 0, 0, 0
    
    Run Code Online (Sandbox Code Playgroud)
  2. 计算长度的 GCD,将系列切成小块,并使用有状态的 LSTM,即:

    d1, ..., d5
    d6, ..., d10
    reset_state
    d15, ..., d20
    
    Run Code Online (Sandbox Code Playgroud)

还有其他/更好的解决方案吗?用完整序列训练无状态 LSTM 是否等同于用片段训练有状态 LSTM?

machine-learning time-series lstm keras

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

从PyTorch中的BiLSTM(BiGRU)获取最后一个状态

阅读了几篇文章后,我仍然对从BiLSTM获取最后的隐藏状态的实现的正确性感到困惑。

  1. 了解PyTorch中的双向RNN(TowardsDataScience)
  2. seq2seq模型的PackedSequence(PyTorch论坛)
  3. PyTorch LSTM中的“隐藏”和“输出”之间有什么区别?(堆栈溢出)
  4. 在一批序列中选择张量(Pytorch形式)

最后一个来源(4)的方法对我来说似乎是最干净的方法,但是我仍然不确定我是否正确理解了线程。我是否在使用LSTM和反向LSTM中正确的最终隐藏状态?这是我的实现

# pos contains indices of words in embedding matrix
# seqlengths contains info about sequence lengths
# so for instance, if batch_size is 2 and pos=[4,6,9,3,1] and 
# seqlengths contains [3,2], we have batch with samples
# of variable length [4,6,9] and [3,1]

all_in_embs = self.in_embeddings(pos)
in_emb_seqs = pack_sequence(torch.split(all_in_embs, seqlengths, dim=0))
output,lasthidden = self.rnn(in_emb_seqs)
if not self.data_processor.use_gru:
    lasthidden = lasthidden[0]
# u_emb_batch has shape batch_size x embedding_dimension
# sum last state from forward …
Run Code Online (Sandbox Code Playgroud)

python lstm pytorch

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

Keras 预计dense_13 有2 个维度

我从 Keras 收到非常令人困惑的错误消息。我使用以下模型并将形状传递给它 input (num_examples, n, 1)

def create_model():
    model = Sequential()
    model.add(LSTM(64, input_shape=(n,1), return_sequences=False))
    model.add(Dense(units=n, activation='linear'))
    return model
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息: ValueError: Error when checking target: expected dense_16 to have 2 dimensions, but got array with shape (11030, 50, 1)

但这怎么可能呢?如果我使用model.summary(),则显示LSTM输出具有以下形状:(None, 64)。那么它如何将具有形状的数组传递(11030, 50, 1)给 Dense 层呢?

此外,如果我尝试model.add(Flatten())在 LSTM 和 Dense 之间添加,我会收到此错误:ValueError: Input 0 is incompatible with layer flatten_3: expected min_ndim=3, found ndim=2.

因此,它将 2D 传递给 Flatten,但是它怎么可能将 3D …

python lstm keras

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

如何在 ConvLSTM 模型中使用多层

我喜欢使用多层 ConvLSTM 模型来检查我的模型。我的训练数据的形状是

trainX.shape (5000, 200, 4) # testX.shape (2627, 200, 4)
Run Code Online (Sandbox Code Playgroud)

以下是我的工作正常的代码

print('trainX.shape', trainX.shape) # trainX.shape (5000, 200, 4)
print('testX.shape', testX.shape) #  testX.shape (2627, 200, 4)
# reshape into subsequences (samples, time steps, rows, cols, channels)
samples, n_features = trainX.shape[0], trainX.shape[2]
n_steps, n_length = 8, 25
trainX = trainX.reshape((samples, n_steps, 1, n_length, n_features)) # 
print('trainX.shape', trainX.shape) # (5000, 8, 1, 25, 4)
testX = testX.reshape((testX.shape[0], n_steps, 1, n_length, n_features))
print('testX.shape', testX.shape) # (2627, 8, 1, 25, 4)

# define …
Run Code Online (Sandbox Code Playgroud)

conv-neural-network lstm keras

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

如何在 Keras 中连接两个 LSTM 模型

我想用 Keras 创建一个带有两个 LSTM 层的模型。但是,以下代码会生成错误:

from keras.models import Sequential
from keras.layers import LSTM, Dropout, Activation
from keras.callbacks import ModelCheckpoint
from keras.utils import to_categorical

model = Sequential()
model.add(LSTM(5, activation="softmax"))
model.add(LSTM(5, activation="softmax"))

model.compile(loss='categorical_crossentropy', 
              optimizer='adam', 
              metrics=['categorical_accuracy'])

# These values are to be predicted.
directions = [-2, -1, 0, 1, 2]

# Sample data. We have three time steps, one 
# feature per timestep, and one resulting value.
data = [[[[1], [2], [3]], -1], 
        [[[3], [2], [1]], 2], 
        [[[4], [5], [7]], 1],
        [[[1], [-1], …
Run Code Online (Sandbox Code Playgroud)

python machine-learning lstm keras recurrent-neural-network

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