- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
从一组由数字标记的类别中,我预测序列中的下一个类别。我在文本生成器上对此进行了建模(因此是随机标题!)。
我为每个类别创建了一个数字,以便 keras 和 tensorflow 将其解释为通过枚举函数分配这些数字的数字信息。它抛出一个错误,建议我应该使用 OneHotEncoding 进行输出。我不知道如何继续。
我已经采样了信息的 OneHotEncoding 的样子,但我不知道如何将其应用到代码正文中/相反,如何更改我的代码,以便没有 OneHotEncoding 的输入可以工作。
我认为我对 M/c 学习的理解还不够好,我正在自学。
import numpy as np
from numpy import array
from numpy import argmax
import tensorflow as tf
import keras
from keras.utils import to_categorical
from keras.utils import np_utils
from keras.layers import LSTM
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.layers import Input, Dense
from keras.layers import TimeDistributed
from keras.models import Model
data= ['10001426', '10001426','10001426','5121550', '5431000', '10001426', '10001426', '10001466','10001426','5121550', '10001426', '10001426', '10001426','10001426','5431000', '10001426', '10001426', '10001466','10001426','5121550', '5431000', '10001426', '10001426', '10001466','10001426','5121550', '5431000', '10001426', '10001426', '10001466','10001426','5121550', '5431000', '10001426', '10001426', '10001466','10001426','5121550']
data= array(data)
chars=['10001426','5121550','5431000','10001466']
chars= array(chars)
"""
#OneHotEncode - turns the category into an encoded array
encoded = to_categorical(data)
print(encoded)
encoded2 = to_categorical(chars)
print(encoded2)
#Invert OneHotEncode
inverted = argmax(encoded[0])
print inverted
inverted2 = argmax(encoded[0])
print inverted2
"""
#Parameters
SEQ_LENGTH = 2 # Learn in steps of 2
VOCAB_SIZE = len(chars) #numer of features - how many categories of fault
#Prepare training data
ix_to_char={ix:char for ix, char in enumerate(chars)}
char_to_ix={char:ix for ix, char in enumerate(chars)}
X= np.zeros((len(data)/SEQ_LENGTH, SEQ_LENGTH, VOCAB_SIZE))
y= np.zeros((len(data)/SEQ_LENGTH, SEQ_LENGTH, VOCAB_SIZE))
for i in range((len(data)/SEQ_LENGTH)):
if (i+1)*SEQ_LENGTH<len(data):
X_sequence = data[(i)*SEQ_LENGTH:(i+1)*SEQ_LENGTH]
X_sequence_ix=[char_to_ix[value] for value in X_sequence]
input_sequence= np.zeros((SEQ_LENGTH, VOCAB_SIZE))
print ((i+1)*SEQ_LENGTH, len(data))
print input_sequence
for j in range(SEQ_LENGTH):
input_sequence[j][X_sequence_ix[j]]=1.
X[i]=input_sequence
y_sequence = data[i*SEQ_LENGTH+1:(i+1)*(SEQ_LENGTH+1)]
y_sequence_ix = [char_to_ix[value] for value in y_sequence]
target_sequence= np.zeros((SEQ_LENGTH, VOCAB_SIZE))
for j in range(SEQ_LENGTH):
if (i+1)*(SEQ_LENGTH+1)<(SEQ_LENGTH):
target_sequence[j][y_sequence_ix[j]]=1
y[i]=target_sequence
print y[i]
#Create the network
HIDDEN_DIM=1
LAYER_NUM= 1
model = Sequential()
model.add(LSTM(HIDDEN_DIM, input_shape=(None, VOCAB_SIZE),
return_sequences=True))
for i in range(LAYER_NUM-1):
model.add(LSTM(HIDDEN_DIM, return_sequences=True))
model.add(Activation('softmax'))
model.compile(loss="categorical_crossentropy",optimizer="rmsprop")
#Train the network
nb_epoch = 0
BATCH_SIZE = 5
GENERATE_LENGTH = 7
while True:
print ('\n\n')
model.fit(X,y,batch_size=BATCH_SIZE,verbose=1, epochs=1)
nb_epoch +=1
generate_text(model, GENERATE_LENGTH)
if nb_epoch %5==0:
model.save_weights('checkpoint_{}_epoch_{}.hdf5'.format(HIDDEN_DIM, nb_epoch))
model.summary()
最佳答案
您忘记了最后一层的输出大小应为 VOCAB_SIZE
。您可以通过添加特殊的Dense
层来做到这一点:
for i in range(LAYER_NUM-1):
model.add(LSTM(HIDDEN_DIM, return_sequences=True))
model.add(Dense(VOCAB_SIZE))
model.add(Activation('softmax'))
model.compile(loss="categorical_crossentropy",optimizer="rmsprop")
或者通过设置最后一个LSTM
层的适当输出(我将跳过这部分的代码,因为它有点乏味)。
关于python - TensorFlow 中 LSTM 分类序列的 OneHotEncoding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47057332/
我有格式的数据,例如 ['1', '5' '6', '5', '2'],其中每个标签可以是 0-9 之间的任意数字的字符。我的数据的性质是名义上的分类,因此它是无序的,随后,我使用 scikit On
我有一个下面列出的原始序列数据帧,我正在尝试使用单热编码,然后将它们存储在一个新的数据帧中,我正在尝试使用以下代码进行操作,但无法存储,因为我得到了之后输出如下: 代码: onehot_encoder
我有多列由分类变量组成,这些变量的形式为 0-4 之间的整数值。但是,所有列都属于同一类别。我尝试使用 scikit learn 中的 OneHotEncoder,但它不会处理列中缺失的类别,这在我在
我有一个简单的代码,可以将分类数据转换为 python 中的一种热编码: a,1,p b,3,r a,5,t 我尝试使用 python OneHotEncoder 转换它们: from sklearn
我正在尝试准备数据以输入决策树和多项朴素贝叶斯分类器。 这就是我的数据的样子(pandas 数据框) Label Feat1 Feat2 Feat3 Feat4 0 1
在 sklearn 0.22 中,categorical_features 参数将被删除,因此以下代码不再可执行: import numpy as np from sklearn.preprocess
我希望将我仅有的一个特征转换为单独的二进制特征: df["pattern_id"] Out[202]: 0 3 1 3 ... 7440 2 7441 2 7442
我正在构建一个神经网络,并且正准备对许多独立(分类)变量使用 OneHotEncoder。我想知道我是否正在使用虚拟变量正确地处理这个问题,或者因为我的所有变量都需要虚拟变量,所以可能有更好的方法。
我是Python新手。我之前只有VBA代码。最近开始使用python进行数据挖掘,但使用python时遇到了问题 我在使用 onehotencoder 正确转换我的类别功能时遇到问题,这是我的代码 f
假设我有一个包含以下列名称的 pandas 数据框: '年龄'(例如 33、26、51 等) '资历'(例如'初级'、'高级'等) “性别”(例如“男”、“女”) '薪水'(例如 32000、4000
我有以下 numpy 矩阵: M = [ ['a', 5, 0.2, ''], ['a', 2, 1.3, 'as'], ['b', 1, 2.3, 'as'], ] M =
我是 Python 中 ML 的新手,对于如何使用分类变量实现决策树感到非常困惑,因为它们由 party 和 ctree 在 中自动编码R。 我想制作一棵具有两个分类独立特征和一个依赖类的决策树。 我
我有一个问题,我试图将转换应用于我的分类特征“国家”和我的其余数字列。我怎么能做到这一点,因为我在下面尝试: preprocess = make_column_transformer( (nu
我想对数据集中 10 个特征中的 3 个分类特征进行编码。我用 preprocessing来自 sklearn.preprocessing这样做如下: from sklearn import prep
该代码包括将 OneHotEncoding 技术应用于 binetflow 文件的两个字段:Proto 和 State。我必须对 5 个文件执行此操作。我能够将下面的代码完美地应用到前两个代码中。当到
我正在阅读有关 Python 中的 One Hot Encoding 的内容,其中有一行我无法解释其含义。代码如下: ohe=preprocessing.OneHotEncoder(dtype=np.
我正在使用sklearn.preprocessing.OneHotEncoder对表单的分类数据进行编码 A=array([[1,4,1],[0,3,2]]) B=array([[1,4,7],[0,
我在使用 OneHotEncoder 仅编码分类列并忽略连续列时遇到问题。无论我在 categorical_features 中指定什么,编码器都会对所有列进行编码。例如: enc = preproc
我有一个包含调查结果的数据框,其中有选项 A-E,并且可以选择多个选项 - 选择可以是“A”或“A;C;D”等。 我将使用这些数据进行一些机器学习,并希望通过 OneHotEncoder 运行它,最终
在使用 OneHotEncoder 转换特征后,我尝试对数据集中的某些特征进行一些数据分析,输出显示特征 13 和特征 21 是最重要的特征,但我如何知道这些特征对应哪些特征到? 最佳答案 您可以使用
我是一名优秀的程序员,十分优秀!