- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试使用 keras 实现卷积 lstm 网络。我没有使用 keras 的嵌入层,而是使用 Gensim 的 doc2vec 嵌入并从中创建输入数据。
预处理
preprocessed_train = utils.preprocess_text(train_vect)
preprocessed_test = utils.preprocess_text(test_vect)
print preprocessed_train[0]
result: [u'snes_classic', u'preorders_open', u'later_month', u'ever_since', u'nintendo', u'announce', u'snes_classic', u'edition', u'earlier', u'fan', u'desperate', u'register', u'interest', u'ensure', u'come', u'launch', u'however', u'although', u'system', u'pre-orders', u'make', u'available', u'retailers', u'every', u'store', u'plan', u'sell', u'console', u'allow', u'people', u'place', u'pre-orders', u'yet', u'today', u'though', u'nintendo', u'confirm', u'snes_classic', u'edition', u'pre-orders', u'soon', u'available', u'fan', u'post_official', u'facebook', u'company', u'console', u'make', u'available_pre-order', u'various_retailers', u'late', u'month', u'nintendo', u'appreciate', u'incredible', u'anticipation', u'hardware', u'reference', u'fact', u'snes_classic', u'edition', u'already', u'sell', u'many', u'place', u'across_globe', u'unfortunately', u'nintendo', u'clarify', u'exactly', u'retailers', u'open', u'snes_classic', u'pre-orders', u'provide', u'exact_date', u'however', u'stand_reason', u'wal-mart', u'retailers', u'force', u'cancel_pre-orders', u'hardware', u'website', u'error', u'saw', u'go_live', u'prematurely', u'currently_unclear', u'wal-mart', u'help', u'cancel', u'reservations', u'sign-up', u'pre-orders', u'go_live', u'properly', u'month', u'appreciate', u'incredible', u'anticipation', u'exist', u'super_nintendo', u'entertainment_system', u'super_nes', u'classic', u'post', u'nintendo', u'tuesday_august', u'1', u'2017', u'post', u'nintendo', u'mention', u'ship', u'significant_amount', u'snes_classic', u'edition', u'units', u'retailers', u'launch', u'company', u'make', u'units', u'available', u'throughout', u'balance', u'calendar', u'snes_classic', u'edition', u'first', u'announce', u'nintendo', u'explain', u'make', u'units', u'nes_classic', u'constantly', u'sell', u'leave', u'many', u'glad', u'nintendo', u'offer_clarification', u'others', u'however', u'remain_unconvinced', u'nintendo', u'able', u'keep', u'demand', u'console', u'incredibly_hard', u'fan', u'place', u'legitimate', u'order', u'snes_classic', u'edition', u'end', u'even_harder', u'find', u'throughout', u'scalpers', u'place', u'pre-orders', u'pick', u'console', u'post-launch', u'order', u'sell', u'higher_price', u'later_date', u'retailers', u'like', u'ebay', u'enforce_rule', u'scalpers', u'unclear_whether', u'enough', u'snes_classic', u'edition', u'launch', u'september_29', u'2017_source', u'nintendo', u'facebook']
数据标签
y_test = [x for x in test_data['slabel']]
y_train = [x for x in train_data['slabel']]
y_test = keras.utils.to_categorical(y_test)
y_train = keras.utils.to_categorical(y_train)
result:
array([[ 0., 0., 0., 0., 1.],
[ 0., 0., 1., 0., 0.],
[ 0., 1., 0., 0., 0.]])
加载doc2vec模型
doc2vec_model = gensim.models.Doc2Vec.load('./doc2vec-models/dmbbv_300_epoch_500_size_model')
推断数据并创建输入向量。 infer_vector 函数根据我创建的 doc2vec 模型创建文档嵌入。
X_train = []
for text in preprocessed_train:
inferred_vec = doc2vec_model.infer_vector(text)
X_train.append(inferred_vec)
X_test = []
for text in preprocessed_test:
inferred_vec = doc2vec_model.infer_vector(text)
X_test.append(inferred_vec)
reshape 数据
X_train = np.array(X_train)
X_test = np.array(X_test)
X_train = X_train.reshape((X_train.shape[0],1,X_train.shape[1]))
X_test = X_test.reshape((X_test.shape[0],1,X_test.shape[1]))
X_train.shape,X_test.shape
result: ((1476, 1, 500), (370, 1, 500))
建筑模型
model = Sequential()
model.add(Conv1D(filters = 128,
kernel_size = 5,
input_shape = (X_train.shape[1],X_train.shape[2]),
padding = 'valid',
activation = 'relu'))
model.add(MaxPooling1D(2))
model.add(LSTM(X_train.shape[1],return_sequences = True,
implementation=2,
kernel_regularizer=regularizers.l1_l2(0.001),
activity_regularizer=regularizers.l1(0.01)
))
model.add(Dropout(0.7))
model.add(Activation('relu'))
model.add(LSTM(256,return_sequences = True))
model.add(Activation('relu'))
model.add(LSTM(128))
model.add(Activation('relu'))
model.add(LSTM(64,return_sequences = True))
model.add(Activation('relu'))
model.add(LSTM(32,return_sequences = True))
model.add(Activation('relu'))
model.add(LSTM(16))
model.add(Activation('relu'))
model.add(Dense(5, activation = 'sigmoid'))
model.compile(loss="categorical_crossentropy", optimizer='adamax',metrics=['categorical_accuracy', 'accuracy'])
然后我收到这个错误
<小时/>-----------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-488-b29db30c3ee7> in <module>()
5 # use_bias=True,
6 padding = 'valid',
----> 7 activation = 'relu'))
8 model.add(MaxPooling1D(2))
9 model.add(LSTM(X_train.shape[1],return_sequences = True,
/usr/local/lib/python2.7/dist-packages/keras/models.pyc in add(self, layer)
434 # and create the node connecting the current layer
435 # to the input layer we just created.
--> 436 layer(x)
437
438 if len(layer.inbound_nodes) != 1:
/usr/local/lib/python2.7/dist-packages/keras/engine/topology.pyc in __call__(self, inputs, **kwargs)
594
595 # Actually call the layer, collecting output(s), mask(s), and shape(s).
--> 596 output = self.call(inputs, **kwargs)
597 output_mask = self.compute_mask(inputs, previous_mask)
598
/usr/local/lib/python2.7/dist-packages/keras/layers/convolutional.pyc in call(self, inputs)
154 padding=self.padding,
155 data_format=self.data_format,
--> 156 dilation_rate=self.dilation_rate[0])
157 if self.rank == 2:
158 outputs = K.conv2d(
/usr/local/lib/python2.7/dist-packages/keras/backend/tensorflow_backend.pyc in conv1d(x, kernel, strides, padding, data_format, dilation_rate)
3114 strides=(strides,),
3115 padding=padding,
-> 3116 data_format=tf_data_format)
3117 return x
3118
/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_ops.pyc in convolution(input, filter, padding, strides, dilation_rate, name, data_format)
670 dilation_rate=dilation_rate,
671 padding=padding,
--> 672 op=op)
673
674
/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_ops.pyc in with_space_to_batch(input, dilation_rate, padding, op, filter_shape, spatial_dims, data_format)
336 raise ValueError("dilation_rate must be positive")
337 if np.all(const_rate == 1):
--> 338 return op(input, num_spatial_dims, padding)
339
340 # We have two padding contributions. The first is used for converting "SAME"
/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_ops.pyc in op(input_converted, _, padding)
662 data_format=data_format,
663 strides=strides,
--> 664 name=name)
665
666 return with_space_to_batch(
/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_ops.pyc in _non_atrous_convolution(input, filter, padding, data_format, strides, name)
114 padding=padding,
115 data_format=data_format_2d,
--> 116 name=scope)
117 elif conv_dims == 2:
118 if data_format is None or data_format == "NHWC":
/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_ops.pyc in conv1d(value, filters, stride, padding, use_cudnn_on_gpu, data_format, name)
2011 result = gen_nn_ops.conv2d(value, filters, strides, padding,
2012 use_cudnn_on_gpu=use_cudnn_on_gpu,
-> 2013 data_format=data_format)
2014 return array_ops.squeeze(result, [spatial_start_dim])
2015
/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_nn_ops.pyc in conv2d(input, filter, strides, padding, use_cudnn_on_gpu, data_format, name)
395 strides=strides, padding=padding,
396 use_cudnn_on_gpu=use_cudnn_on_gpu,
--> 397 data_format=data_format, name=name)
398 return result
399
/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.pyc in apply_op(self, op_type_name, name, **keywords)
765 op = g.create_op(op_type_name, inputs, output_types, name=scope,
766 input_types=input_types, attrs=attr_protos,
--> 767 op_def=op_def)
768 if output_structure:
769 outputs = op.outputs
/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.pyc in create_op(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_shapes, compute_device)
2630 original_op=self._default_original_op, op_def=op_def)
2631 if compute_shapes:
-> 2632 set_shapes_for_outputs(ret)
2633 self._add_op(ret)
2634 self._record_op_seen_by_control_dependencies(ret)
/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.pyc in set_shapes_for_outputs(op)
1909 shape_func = _call_cpp_shape_fn_and_require_op
1910
-> 1911 shapes = shape_func(op)
1912 if shapes is None:
1913 raise RuntimeError(
/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.pyc in call_with_requiring(op)
1859
1860 def call_with_requiring(op):
-> 1861 return call_cpp_shape_fn(op, require_shape_fn=True)
1862
1863 _call_cpp_shape_fn_and_require_op = call_with_requiring
/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/common_shapes.pyc in call_cpp_shape_fn(op, require_shape_fn)
593 res = _call_cpp_shape_fn_impl(op, input_tensors_needed,
594 input_tensors_as_shapes_needed,
--> 595 require_shape_fn)
596 if not isinstance(res, dict):
597 # Handles the case where _call_cpp_shape_fn_impl calls unknown_shape(op).
/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/common_shapes.pyc in _call_cpp_shape_fn_impl(op, input_tensors_needed, input_tensors_as_shapes_needed, require_shape_fn)
657 missing_shape_fn = True
658 else:
--> 659 raise ValueError(err.message)
660
661 if missing_shape_fn:
ValueError: Negative dimension size caused by subtracting 5 from 1 for 'conv1d_55/convolution/Conv2D' (op: 'Conv2D') with input shapes: [?,1,1,500], [1,5,500,128].
最佳答案
问题出在输入形状上。您可以尝试使用 (None, 500, 1)
,而不是 (None, 1, 500)
。
你可以通过查看异常来判断
`Negative dimension size caused by subtracting 5 from 1 for 'conv1d'`
内核 (5) 大于第二维。
关于python - 将 gensim doc2vec 与 Keras Conv1d 结合使用。值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46197493/
比方说, word2vec.model 是我训练好的 word2vec 模型。当出现词汇外单词( oov_word )时,我计算向量 vec 使用 compute_vec(oov_word) 方法。现
我有一个现有的 gensim Doc2Vec 模型,我正在尝试对训练集以及模型进行迭代更新。 我拿新文件,照常进行预处理: stoplist = nltk.corpus.stopwords.words
使用 gensim.models.LdaMallet 有什么区别和 gensim.models.LdaModel ?我注意到参数并不完全相同,想知道什么时候应该使用一个而不是另一个? 最佳答案 TL;
我训练了一个 gensim.models.doc2vec.Doc2Vec 模型 d2v_model = Doc2Vec(sentences, size=100, window=8, min_count
我在 gensim 中有一个 word2vec 模型,训练了 98892 个文档。对于句子数组中不存在的任何给定句子(即我训练模型的集合),我需要用该句子更新模型,以便下次查询时给出一些结果。我这样做
我对 Gensim 很陌生,我正在尝试使用 word2vec 模型训练我的第一个模型。我看到所有参数都非常简单易懂,但是我不知道如何跟踪模型的损失以查看进度。此外,我希望能够在每个 epoch 之后获
请帮助我理解如何 TaggedDocument 之间的区别和 LabeledSentence的 gensim作品。我的最终目标是使用 Doc2Vec 进行文本分类模型和任何分类器。我正在关注这个 bl
尝试使用以下代码行在 gensim 中加载文件: model = gensim.models.KeyedVectors.load_word2vec_format(r"C:/Users/dan/txt_
我有一组用神经网络训练的嵌入,与 gensim 的 word2vec 无关。 我想使用这些嵌入作为 gensim.Word2vec 中的初始权重。 现在我看到的是,我可以model.load(SOME
我尝试使用 gensim 导入 import gensim 但出现以下错误 ImportError Traceback (most rece
我正在关注 https://radimrehurek.com/gensim/wiki.html#latent-dirichlet-allocation 上的“英语维基百科”gensim 教程 它解释了
我正在使用 24 核虚拟 CPU 和 100G 内存来训练 Doc2Vec 与 Gensim,但无论修改核数,CPU 的使用率始终在 200% 左右。 top htop 上面两张图显示了cpu使用率,
在将文本文档列表转换为语料库字典,然后使用以下方法将其转换为词袋模型之后: dictionary = gensim.corpora.Dictionary(docs) # docs is a list
我已经使用 Gensim 3.8.0 训练了一个 Word2Vec 模型。后来我尝试在 GCP 上使用使用 Gensim 4.0.o 的预训练模型。我使用了以下代码: model = KeyedVec
我正在构建一个多标签文本分类程序,我正在尝试使用 OneVsRestClassifier+XGBClassifier 对文本进行分类。最初,我使用 Sklearn 的 Tf-Idf 矢量化来矢量化文本
我发现关于 word2vec.similarity() 的警告如下: >d:\python\lib\site-packages\gensim\matutils.py:737: FutureWarnin
我正在尝试使用版本为 3.6 的 Python 的 Gensim 库运行程序。 每当我运行该程序时,我都会遇到这些语句: C:\Python36\lib\site-packages\gensim-2.
我有一个通过 Java 中的 Mallet 训练的 LDA 模型。 Mallet LDA 模型生成了三个文件,这使我能够从文件运行模型并推断新文本的主题分布。 现在我想实现一个 Python 工具,它
我正在使用gensim doc2vec。我想知道是否有任何有效的方法来了解doc2vec的词汇量。一种粗略的方法是计算单词总数,但是如果数据量很大(1GB或更多),那么这将不是一种有效的方法。 最佳答
documentation有点不清楚如何将 fasttext 模型保存到磁盘 - 如何在参数中指定路径,我尝试这样做,但失败并出现错误 文档中的示例 >>> from gensim.test.util
我是一名优秀的程序员,十分优秀!