小编Bla*_*ade的帖子

如何理解Keras模型拟合中的损失acc val_loss val_acc

我是Keras的新手,对如何理解我的模型结果有一些疑问.这是我的结果:(为方便起见,我只在每个纪元后粘贴损失acc val_loss val_acc)

训练4160个样本,验证1040个样本如下:

Epoch 1/20
4160/4160 - loss: 3.3455 - acc: 0.1560 - val_loss: 1.6047 - val_acc: 0.4721

Epoch 2/20
4160/4160 - loss: 1.7639 - acc: 0.4274 - val_loss: 0.7060 - val_acc: 0.8019

Epoch 3/20
4160/4160 - loss: 1.0887 - acc: 0.5978 - val_loss: 0.3707 - val_acc: 0.9087

Epoch 4/20
4160/4160 - loss: 0.7736 - acc: 0.7067 - val_loss: 0.2619 - val_acc: 0.9442

Epoch 5/20
4160/4160 - loss: 0.5784 - acc: 0.7690 - val_loss: 0.2058 - val_acc: 0.9433

Epoch …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network deep-learning keras

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

如何从 SMILES 分子表示生成图形?

我有一个用 SMILES 字符串表示的分子数据集。我试图将其表示为图表。有没有办法这样做?例如,假设我有 string CC(C)(C)c1ccc2occ(CC(=O)Nc3ccccc3F)c2c1,是否有将其转换为图形表示的通用方法,即邻接矩阵和原子向量?我从图表中看到解决SMILES 的问题,我知道rdkitMolFromSmiles,但我找不到可以从 SMILES 字符串中获取图表的内容。

python cheminformatics rdkit

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

支持向量回归中的度数 - RBF核

我想问一下SVM上的RBF内核.

在sklearn的文档中:http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html#sklearn.svm.SVR 声明"核函数的程度仅在poly中有意义, rbf,sigmoid".

我可以理解多项式内核上度的含义,但是高斯(rbf)内核呢?我可以看到,sklearn库中的默认值为3.我还运行了一个GridSearch,其中包含了我想出的一些数字,估计3也是最佳值.它真的很重要还是只是一个错误的类型?如果是这样,有人可以解释一下它的含义和价值吗?

提前致谢

gaussian svm scikit-learn

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

在 Keras 分类中实现注意力

我想实现对训练有素的图像分类 CNN 模型的关注。例如,有 30 个类,使用 Keras CNN,我为每个图像获得预测类。但是,要可视化预测结果的重要特征/位置。我想在 FC 层之后添加一个 Soft Attention。我尝试阅读“展示、出席和讲述:具有视觉注意的神经图像字幕生成”以获得类似的结果。但是,我无法理解作者是如何实现的。因为我的问题不是图像标题或文本 seq2seq 问题。

我有一个图像分类 CNN,想提取特征并将其放入 LSTM 以可视化软注意力。虽然我每次都卡住了。

我采取的步骤:

  1. 加载CNN模型
  2. 从单个图像中提取特征(但是,LSTM 会检查同一图像并删除图像中的一些补丁)

我采取的步骤:

  1. 加载 CNN 模型(我之前已经训练了 CNN 进行预测)
  2. 从单个图像中提取特征(但是,LSTM 会检查同一图像并删除图像中的一些补丁)

执行以下步骤后卡住:

  1. 用软注意力创建 LSTM
  2. 获取单个输出

我正在使用具有 TensorFlow 背景的 Keras。使用 ResNet50 提取 CNN 特征。图像为 224x224,FC 层有 2048 个单位作为输出形状。

#Extract CNN features:

base_model = load_model(weight_file, custom_objects={'custom_mae': custom_mae})
last_conv_layer = base_model.get_layer("global_average_pooling2d_3")
cnn_model = Model(input=base_model.input, output=last_conv_layer.output)
cnn_model.trainable = False
bottleneck_features_train_v2 = cnn_model.predict(train_gen.images)


#Create LSTM:    

seq_input = Input(shape=(1, 224, 224, 3 ))
encoded_frame = TimeDistributed(cnn_model)(seq_input) …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow recurrent-neural-network attention-model

5
推荐指数
0
解决办法
1948
查看次数

在pytorch中使用dataloader进行替换采样

我有一个格式定义的数据集:

class MyDataset(Dataset):
    def __init__(self, N):
        self.N = N
        self.x = torch.rand(self.N, 10)
        self.y = torch.randint(0, 3, (self.N,))

    def __len__(self):
        return self.N

    def __getitem__(self, idx):
        return self.x[idx], self.y[idx]
Run Code Online (Sandbox Code Playgroud)

在训练过程中,我想对m训练样本进行批量采样,并进行替换;例如,第一次迭代包括数据索引[1, 5, 6],第二次迭代包括数据点[12, 3, 5],依此类推。所以迭代总数是一个输入,而不是N/m

有没有办法用来dataloader处理这个问题?如果没有,除了以下形式之外还有其他方法吗

for i in range(iter):
    x = np.random.choice(range(N), m, replace=True)
Run Code Online (Sandbox Code Playgroud)

来实施这个?

pytorch

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

在pytorch中构建参数组

torch.optim 文档中,指出可以使用不同的优化超参数对模型参数进行分组和优化。它说

\n
\n

例如,当想要指定每一层的学习率时,这非常有用:

\n
optim.SGD([\n                {\'params\': model.base.parameters()},\n                {\'params\': model.classifier.parameters(), \'lr\': 1e-3}\n            ], lr=1e-2, momentum=0.9)\n
Run Code Online (Sandbox Code Playgroud)\n

这意味着model.base\xe2\x80\x99s 个参数将使用默认学习率为1e-2model.classifier\xe2\x80\x99s 个参数将使用\n学习率为1e-3,动量0.9将用于所有参数。

\n
\n

我想知道如何定义这样具有parameters()属性的组。我想到的是以下形式的东西

\n
class MyModel(nn.Module):\n    def __init__(self):\n        super(MyModel, self).__init__()\n        self.base()\n        self.classifier()\n\n        self.relu = nn.ReLU()\n\n    def base(self):\n        self.fc1 = nn.Linear(1, 512)\n        self.fc2 = nn.Linear(512, 264)\n\n    def classifier(self):\n        self.fc3 = nn.Linear(264, 128)\n        self.fc4 = nn.Linear(128, 964)\n\n    def forward(self, y0):\n\n        y1 = self.relu(self.fc1(y0))\n        y2 = self.relu(self.fc2(y1))\n        y3 = …
Run Code Online (Sandbox Code Playgroud)

pytorch

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

Python Min and Max range for Color bar on Matplotlib Contour Graph

I am trying to edit the colorbar range on my contour graph from 0 to 0.12, I have tried a few things but it hasn't worked. I keep getting the full color bar range up until 0.3 which is not what I want.

This is my code:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.tri as tri
triang = tri.Triangulation(x, y)

plt.tricontour(x, y, z, 15, colors='k')

plt.tricontourf(x, y, z, 15, cmap='Blues', vmin=0, vmax=0.12,\
                extend ='both')
plt.colorbar()

plt.clim(0,0.12)

plt.ylim …
Run Code Online (Sandbox Code Playgroud)

python colors matplotlib contour colorbar

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

CNN 在 Keras 中的损失在某个训练点变成了 nan

我正在 Keras 中训练 VGG16 的最后一层。我的模型看起来像:

map_characters1 = {0: 'No Pneumonia', 1: 'Yes Pneumonia'}
class_weight1 = class_weight.compute_class_weight('balanced', np.unique(y_train), y_train)
weight_path1 = './imagenet_models/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5'
pretrained_model_1 = VGG16(weights = 'imagenet', include_top=False, input_shape=(200, 200, 3))

optimizer1 = keras.optimizers.Adam(lr=0.0001)
def pretrainedNetwork(xtrain,ytrain,xtest,ytest,pretrainedmodel,pretrainedweights,classweight,numclasses,numepochs,optimizer,labels):
    base_model = pretrained_model_1 # Topless
    # Add top layer
    x = base_model.output
    x = Flatten()(x)
    predictions = Dense(numclasses, activation='relu')(x)
    model = Model(inputs=base_model.input, outputs=predictions)
    # Train top layer
    for layer in base_model.layers:
        layer.trainable = False
    model.compile(loss='categorical_crossentropy', 
              optimizer=optimizer, 
              metrics=['accuracy'])
    callbacks_list = [keras.callbacks.EarlyStopping(monitor='val_acc', patience=3, verbose=1)]
    model.summary()
    # Fit …
Run Code Online (Sandbox Code Playgroud)

python deep-learning conv-neural-network keras

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

在联合损失函数上训练多输出 Keras 模型

我正在 Keras 中编写两个联合解码器,具有一个公共输入、两个单独的输出以及一个将两个输出都考虑在内的损失函数。我遇到的问题是损失函数。

以下是可以重现错误的最小 Keras 代码:

import tensorflow as tf
from scat import *

from keras.layers import Input, Reshape, Permute, Lambda, Flatten
from keras.layers.core import Dense
from keras.layers.advanced_activations import LeakyReLU
from keras.models import Model
from keras import backend as K

def identity(x):
    return K.identity(x)

# custom loss function
def custom_loss():
    def my_loss(y_dummy, pred):
        fcn_loss_1 = tf.nn.softmax_cross_entropy_with_logits(labels=y_dummy[0], logits=pred[0])
        fcn_loss_2 = tf.nn.softmax_cross_entropy_with_logits(labels=y_dummy[1], logits=pred[1])
        fcn_loss_2 = tf.matrix_band_part(fcn_loss_2, 0, -1) - tf.matrix_band_part(fcn_loss_2, 0, 0)

        fcn_loss = tf.reduce_mean(fcn_loss_1) + 2 * tf.reduce_mean(fcn_loss_2)

        return fcn_loss
    return …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow loss-function

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