我是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) 我想问一下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也是最佳值.它真的很重要还是只是一个错误的类型?如果是这样,有人可以解释一下它的含义和价值吗?
提前致谢
我想实现对训练有素的图像分类 CNN 模型的关注。例如,有 30 个类,使用 Keras CNN,我为每个图像获得预测类。但是,要可视化预测结果的重要特征/位置。我想在 FC 层之后添加一个 Soft Attention。我尝试阅读“展示、出席和讲述:具有视觉注意的神经图像字幕生成”以获得类似的结果。但是,我无法理解作者是如何实现的。因为我的问题不是图像标题或文本 seq2seq 问题。
我有一个图像分类 CNN,想提取特征并将其放入 LSTM 以可视化软注意力。虽然我每次都卡住了。
我采取的步骤:
我采取的步骤:
执行以下步骤后卡住:
我正在使用具有 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
我有一个格式定义的数据集:
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)
来实施这个?
在torch.optim 文档中,指出可以使用不同的优化超参数对模型参数进行分组和优化。它说
\n\n例如,当想要指定每一层的学习率时,这非常有用:
\nRun Code Online (Sandbox Code Playgroud)\noptim.SGD([\n {\'params\': model.base.parameters()},\n {\'params\': model.classifier.parameters(), \'lr\': 1e-3}\n ], lr=1e-2, momentum=0.9)\n这意味着
\nmodel.base\xe2\x80\x99s 个参数将使用默认学习率为1e-2,model.classifier\xe2\x80\x99s 个参数将使用\n学习率为1e-3,动量0.9将用于所有参数。
我想知道如何定义这样具有parameters()属性的组。我想到的是以下形式的东西
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) 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) 我正在 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) 我正在 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 ×6
keras ×4
pytorch ×2
tensorflow ×2
colorbar ×1
colors ×1
contour ×1
gaussian ×1
matplotlib ×1
rdkit ×1
scikit-learn ×1
svm ×1