完毕
我只是想运行并复制以下项目:https://machinelearningmastery.com/time-series-prediction-lstm-recurrent-neural-networks-python-keras/。基本上到目前为止,我已经完成了链接项目中的所有操作,但我遇到了以下问题:
我自己的数据集 - 我尝试过使用数据框:
输入代码:
# reshape into X=t and Y=t+1
look_back = 1
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)
# reshape input to be [samples, time steps, features]
trainX = numpy.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
testX = numpy.reshape(testX, (testX.shape[0], 1, testX.shape[1]))
# create and fit the LSTM network
model = Sequential()
model.add(LSTM(4, input_shape=(1, look_back)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=100, batch_size=1, verbose=2)
Run Code Online (Sandbox Code Playgroud)
输出错误:
--------------------------------------------------------------------------- …Run Code Online (Sandbox Code Playgroud) 我想训练我的数据,我已经将我的数据与 word2vec 预训练模型进行字符串连接https://dl.fbaipublicfiles.com/fasttext/vectors-crawl/cc.id.300.vec.gz,并成功创建模型,但是当我想训练数据集时,我收到了这样的错误
UnimplementedError Traceback (most recent call last)
<ipython-input-28-85ce60cd1ded> in <module>()
1 history = model.fit(X_train, y_train, epochs=6,
2 validation_data=(X_test, y_test),
----> 3 validation_steps=30)
1 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
53 ctx.ensure_initialized()
54 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
---> 55 inputs, attrs, num_outputs)
56 except core._NotOkStatusException as e:
57 if name is not None:
UnimplementedError: Graph execution error:
#skiping error
Node: 'binary_crossentropy/Cast'
Cast string to float is not supported
[[{{node binary_crossentropy/Cast}}]] [Op:__inference_train_function_21541]
Run Code Online (Sandbox Code Playgroud)
代码 : …
我在 google colab 上有这段代码,它允许我使用 gridsearchCV 优化 LSTM 模型,但最近出现了一条错误消息:
ModuleNotFoundError:没有名为“keras.wrappers”的模块。
除了“keras.wrappers”之外,还有其他模块允许重新启动代码吗?
代码:
from keras.layers import Dense, LSTM, Dropout
from keras import optimizers
from sklearn.model_selection import GridSearchCV
from keras.wrappers.scikit_learn import KerasRegressor
def create_model(unit, dropout_rate, lr ):
model=Sequential()
model.add(LSTM(unit,return_sequences=True, input_shape=(1,5)))
model.add(Dropout(dropout_rate))
model.add(LSTM(unit))
model.add(Dropout(dropout_rate))
model.add(Dense(1))
adam= optimizers.Adam(lr)
model.compile(optimizer=adam, loss='mean_squared_error')
return model
my_regressor = KerasRegressor(build_fn=create_model, verbose=2)
grid_param_LSTM = {
'unit': [50, 70, 120],
'batch_size': [12, 24, 48],
'epochs': [200],
'lr': [0.001, 0.01, 0.1],
'dropout_rate':[0.1, 0.2, 0.3]
}
grid_GBR = GridSearchCV(estimator=my_regressor, param_grid = grid_param_LSTM, scoring = …Run Code Online (Sandbox Code Playgroud) 我正致力于LSTM神经网络的实施,用于序列分类.我想用以下参数设计一个网络:
n热矢量序列.我需要在CNTK中实现它,但我很难,因为它的文档编写得不是很好.有人可以帮助我吗?
machine-learning neural-network lstm recurrent-neural-network cntk
是否有充分了解何时使用辍学与简单获取更多数据的指导原则?我之前已经理解,如果有足够的数据,就不会想要使用dropout.然而,我最近有一个模型(4层LSTM处理音频输入),无论我提供多少数据,都会凭经验收敛到一定的损失 - 然后在我添加丢失时显着改善.
这种现象很好理解吗?那么,即使有更多(可能是无限的)数据可用,总是会使用dropout吗?
后续行动:如果是这样,我在RL论文中没有多少提及辍学.我认为这是因为有无限的可生成数据.这里是否有其他细微差别可以考虑探讨的状态空间的分数,或者可用的训练数据的异质性等?
我正在尝试这个笔记本:https: //github.com/sjchoi86/Tensorflow-101/blob/master/notebooks/char_rnn_sample_tutorial.ipynb
我对[6]中的这一行有疑问:
outputs, final_state = seq2seq.rnn_decoder(inputs, istate, cell, loop_function=None, scope='rnnlm')
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
NameError: name 'seq2seq' is not defined
Run Code Online (Sandbox Code Playgroud)
我正在使用tensorflow 1.0.1.我试过了
tf.contrib.seq2seq
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
AttributeError: 'module' object has no attribute 'rnn_decoder'
Run Code Online (Sandbox Code Playgroud)
我认为在tensorflow 1.0.1中新的rnn网络实现是一个问题,但我不知道如何修复它.
python attributeerror lstm tensorflow recurrent-neural-network
我是tensorflow的新手,我正在尝试重现网站上发布的实验https://github.com/jiegzhan/image-classification-rnn
我的TensorFlow版本是1.0.1,所以我稍微改变了他的代码.我使用的代码如下.
import os
import sys
import json
import time
import tensorflow as tf
from tensorflow.contrib.rnn.python.ops import rnn, rnn_cell
from tensorflow.examples.tutorials.mnist import input_data
n_input = 28 # MNIST data input (img shape: 28*28)
n_steps = 28 # timesteps
n_hidden = 128 # hidden layer num of features
n_classes = 10 # MNIST total classes (0-9 digits)
#coding:utf-8
def rnn_model(x, weights, biases):
"""RNN (LSTM or GRU) model for image"""
x = tf.transpose(x, [1, 0, 2])
x = tf.reshape(x, [-1, n_input]) …Run Code Online (Sandbox Code Playgroud) 我正在使用keras 2.0.2为分类任务创建一个lstm网络.网络拓扑如下:
from numpy.random import seed
seed(42)
from tensorflow import set_random_seed
set_random_seed(42)
import os
#os.environ['PYTHONHASHSEED'] = '0'
model = Sequential()
model.add(embedding_layer)
model.add(LSTM(units=100)) #line A
model.add(Dropout(0.2))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
在同一数据集上,使用当前行A,我得到一个结果:
precision recall f1 support
0 0.68 0.58 0.63 305
2 0.92 0.95 0.93 1520
avg 0.8 0.76 0.78 1825
Run Code Online (Sandbox Code Playgroud)
,其中0,2表示类标签
但是当A行改为
model.add(LSTM(100))
Run Code Online (Sandbox Code Playgroud)
我得到了不同的结果:
precision recall f1 support
0 0.66 0.58 0.62 305
2 0.92 0.94 0.93 1520
avg 0.79 0.76 0.77 1825
Run Code Online (Sandbox Code Playgroud)
根据keras文档https://keras.io/layers/recurrent/#lstm,这对我没有意义,我认为两行应该相同?我误解了什么吗?
我想扩展一下何时重置状态的问题。
假设我这样训练一个有状态模型:
for i in range(epochs):
model.fit(X_train, y_train, epochs=1, batch_size=1, shuffle=False)
model.reset_states()
Run Code Online (Sandbox Code Playgroud)
我的训练和测试集来自一个时间序列数据集,而测试集紧随训练集之后。
接下来,我要评估测试集并获得一组预测。
score = model.evaluate(X_test, y_test, batch_size=1, verbose=True)
prediction = model.predict(X_test, batch_size=1)
Run Code Online (Sandbox Code Playgroud)
我感觉好像在训练循环结束时重置模型状态会导致评估或预测步骤错误,至少在集合开始时会出错。是这样吗?如果数据依序继续进入测试集中,是否应该不重置最后一个时期的状态?
此外,在对测试集进行评估之后,是否需要将模型的状态恢复到训练集结束时的状态,然后才能尝试进行预测?我应该复制模型吗?保存并重新加载吗?
我有3个变量x,y,z的数据集。它们是3种不同传感器的读数。这些将作为输入。
当这些传感器找到特定对象时,其读数的相应输出应为1。否则,那里的读数的相应输出应为0。
我要做的是制作一个神经网络(可能是LSTM)或任何其他方法来接收传感器的读数,并告诉传感器是否在寻找对象。请注意,传感器输出的值通常与图中的值不同,但是我注意到的是读数与它们之间的距离之间的相关性。
最好的实现方法是什么?
lstm ×10
tensorflow ×6
keras ×5
python ×4
cntk ×1
mnist ×1
nlp ×1
python-3.x ×1
stateful ×1
tf.keras ×1