小编Sal*_* A.的帖子

Keras:model.evaluate vs model.predict多级NLP任务的准确度差异

我正在使用以下代码在keras中训练一个简单的模型用于NLP任务.变量名称对于训练,测试和验证集是不言自明的.该数据集有19个类,因此网络的最后一层有19个输出.标签也是单热编码的.

nb_classes = 19
model1 = Sequential()
model1.add(Embedding(nb_words,
                     EMBEDDING_DIM,
                     weights=[embedding_matrix],
                     input_length=MAX_SEQUENCE_LENGTH,
                     trainable=False))
model1.add(LSTM(num_lstm, dropout=rate_drop_lstm, recurrent_dropout=rate_drop_lstm))
model1.add(Dropout(rate_drop_dense))
model1.add(BatchNormalization())
model1.add(Dense(num_dense, activation=act))
model1.add(Dropout(rate_drop_dense))
model1.add(BatchNormalization())

model1.add(Dense(nb_classes, activation = 'sigmoid'))


model1.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
#One hot encode all labels
ytrain_enc = np_utils.to_categorical(train_labels)
yval_enc = np_utils.to_categorical(val_labels)
ytestenc = np_utils.to_categorical(test_labels)

model1.fit(train_data, ytrain_enc,
             validation_data=(val_data, yval_enc),
             epochs=200,
             batch_size=384,
             shuffle=True,
             verbose=1)
Run Code Online (Sandbox Code Playgroud)

在第一个时代之后,这给了我这些输出.

Epoch 1/200
216632/216632 [==============================] - 2442s - loss: 0.1427 - acc: 0.9443 - val_loss: 0.0526 - val_acc: 0.9826
Run Code Online (Sandbox Code Playgroud)

然后我在测试数据集上评估我的模型,这也显示我在0.98附近的准确度.

model1.evaluate(test_data, y = ytestenc, batch_size=384, verbose=1)
Run Code Online (Sandbox Code Playgroud)

但是,标签是单热编码的,所以我需要类的预测向量,以便我可以生成混淆矩阵等.所以我使用,

PREDICTED_CLASSES = model1.predict_classes(test_data, …
Run Code Online (Sandbox Code Playgroud)

machine-learning deep-learning keras

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

Python:如何删除特定列为空/ NaN的行?

我有一个csv文件.我读了它:

import pandas as pd
data = pd.read_csv('my_data.csv', sep=',')
data.head()
Run Code Online (Sandbox Code Playgroud)

它的输出如下:

id    city    department    sms    category
01    khi      revenue      NaN       0
02    lhr      revenue      good      1
03    lhr      revenue      NaN       0
Run Code Online (Sandbox Code Playgroud)

我想删除sms列为空/ NaN的所有行.什么是有效的方法呢?

python dataframe pandas

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

在训练期间更改keras中的优化器

我正在使用nadam优化器开发模型.我想知道如果在sgd两个时期内验证损失没有减少,是否有办法在训练期间切换到.

keras

9
推荐指数
2
解决办法
4536
查看次数

填充轮廓的圆圈

我有一组图像,其中有一个绘制为白色轮廓的圆圈。但是,我想用白色填充整个圆圈。快速的方法是什么?以下是该图像的示例:

样本图片

我尝试使用嵌套循环来实现此目的,但是这需要很多时间,并且我拥有约150万张图像。以下是我的代码:

roundRobinIndex = 0
new_image = np.zeros((img_w, img_h))
for row in range(540):
    for column in range(800):
        if image[row,column] == 255:
            roundRobinIndex = (roundRobinIndex + 1) % 2
        if roundRobinIndex == 1:
            new_image[row, column] = 255
Run Code Online (Sandbox Code Playgroud)

python opencv image image-processing python-imaging-library

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

从无向网络x图中删除自循环

我用节点列表创建了一个图表networkx.它有自我循环.如何删除它们?以下是样本:

import networkx as NX
G=NX.Graph()
G.add_edge(1,2)
G.add_edge(1,1)
print (G.edges())

[(1, 2), (1, 1)]
Run Code Online (Sandbox Code Playgroud)

我不想要(1, 1)边缘.

python networkx

5
推荐指数
2
解决办法
3517
查看次数

R中的等频和等宽分箱

给定一个数据集,我想按照此处所述使用等频分箱和等宽分箱将其划分为 4 个箱,但我想使用 R 语言。

数据集:

0, 4, 12, 16, 16, 18, 24, 26, 28
Run Code Online (Sandbox Code Playgroud)

我试图为等宽分箱编写一些代码,但它只会生成一个直方图。

bins<-4;
minimumVal<-min(dataset)
maximumVal<-max(dataset)
width=(maximumVal-minimumVal)/bins;
edges = minimumVal:width:maximumVal;
hist(dataset, breaks = "Sturges", freq = TRUE, xlim = range(edges))
Run Code Online (Sandbox Code Playgroud)

我是 R 的新手。

r

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

Seaborn:如何在barplot中用X轴中的文本替换索引?

我有一个数据集,其中的category列具有表示类标签的整数值,即0,1,2 .....

我有一个单独的文件,其中包含该类别的文本标签,即针对索引0,它包含classA等等。我想使用seaborn和以下代码来绘制条形图。

import seaborn as sns
train_df = pd.read_csv("unclean_text.csv", sep='\t')
label_text = pd.read_csv("labels.csv")
is_dup = train_df['category'].value_counts()

plt.figure(figsize=(8,4))
sns.barplot(is_dup.index, is_dup.values, alpha=0.8, color=color[1])
plt.show()
Run Code Online (Sandbox Code Playgroud)

它可以正确绘制每个类的频率的小节图。

在此处输入图片说明

但是我希望在x轴上使用文本标签,而不是in中的索引值label_text,这也是长度为19(0-18)的列向量。怎么做?

python seaborn

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

keras中的segnet:新数组的总大小必须保持不变错误

我正在用Python实现segnet。以下是代码。

img_w = 480
img_h = 360
pool_size = 2

def build_model(img_w, img_h, pool_size):
    n_labels = 12

    kernel = 3

    encoding_layers = [
        Conv2D(64, (kernel, kernel), input_shape=(img_h, img_w, 3), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        Convolution2D(64, (kernel, kernel), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        MaxPooling2D(pool_size = (pool_size,pool_size)),

        Convolution2D(128, (kernel, kernel), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        Convolution2D(128, (kernel, kernel), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        MaxPooling2D(pool_size = (pool_size,pool_size)),

        Convolution2D(256, (kernel, kernel), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        Convolution2D(256, (kernel, kernel), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        Convolution2D(256, (kernel, kernel), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        MaxPooling2D(pool_size = (pool_size,pool_size)),

        Convolution2D(512, (kernel, kernel), …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network deep-learning keras

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

Pandas:根据现有列的值创建新列

我有一个包含两列的熊猫数据框,如下所示:

A      B
Yes    No
Yes    Yes
No     Yes
No     No
NA     Yes
NA     NA
Run Code Online (Sandbox Code Playgroud)

我想根据这些值创建一个新列,这样如果任何列值是Yes,新列中的值也应该是Yes。如果两列都有值No,则新列也有值No。最后,如果两列都有 value NANA则新列的输出也将具有。上述数据的示例输出是:

C
Yes
Yes
Yes
No
Yes
NA
Run Code Online (Sandbox Code Playgroud)

我在数据帧的长度上写了一个循环,然后检查每个值以获得一个新列。但是,10M 记录需要很长时间。有没有更快的pythonic方法来实现这一目标?

python pandas

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

在线性时间内从具有“很少”边的图构建 MST

我在面试的时候面试官问了我一个问题:

我们有一个图 G(V,E),我们可以使用 prim 或 kruskal 算法找到 MST。但是这些算法并没有考虑到 G 中的边“很少”。我们如何利用这些信息来提高寻找 MST 的时间复杂度?我们可以在线性时间内找到 MST 吗?

我唯一记得的是 Kruskal 算法在稀疏图中更快,而 Prim 算法在非常密集的图中更快。但是我无法回答他如何使用关于边数的先验知识在线性时间内制作 MST。

任何见解或解决方案将不胜感激。

algorithm minimum-spanning-tree

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