小编Mir*_*ber的帖子

scikit-learn SVM.SVC()非常慢

我尝试使用SVM分类器训练大约100k样本的数据,但我发现它非常慢,即使两小时后也没有响应.当数据集有大约1k个样本时,我可以立即得到结果.我也尝试过SGDClassifier和naïvebayes,速度非常快,我在几分钟内得到了结果.你能解释一下这种现象吗?

python svm scikit-learn

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

如何优雅地将Sklearn的GridseachCV的最佳参数传递给另一个模型?

我通过网格搜索CV为我的KNN估算器找到了一组最好的超参数:

>>> knn_gridsearch_model.best_params_
{'algorithm': 'auto', 'metric': 'manhattan', 'n_neighbors': 3}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.我想用这些新发现的参数训练我的最终估算器.有没有办法直接提供上面的超参数字典?我试过这个:

>>> new_knn_model = KNeighborsClassifier(knn_gridsearch_model.best_params_)
Run Code Online (Sandbox Code Playgroud)

但相反,希望的结果new_knn_model只是将整个字典作为模型的第一个参数,并将其余的作为默认值:

>>> knn_model
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
           metric_params=None, n_jobs=1,
           n_neighbors={'n_neighbors': 3, 'metric': 'manhattan', 'algorithm': 'auto'},
           p=2, weights='uniform')
Run Code Online (Sandbox Code Playgroud)

确实令人失望.

python machine-learning scikit-learn hyperparameters grid-search

12
推荐指数
2
解决办法
5502
查看次数

如何在python中将bitarray转换为整数

假设我使用以下代码在python中定义了一些bitarray:

from bitarray import bitarray
d=bitarray('0'*30)
d[5]=1
Run Code Online (Sandbox Code Playgroud)

如何将d转换为整数表示?另外,如何d&(d+1)使用bitarrays 进行操作?

python bit-manipulation bitarray

10
推荐指数
4
解决办法
4494
查看次数

神经网络预测第n个方格

我正在尝试使用多层神经网络来预测第n个方格.

我有以下训练数据,包含前99个方格

1    1
2    4
3    9
4    16
5    25
...
98   9604
99   9801
Run Code Online (Sandbox Code Playgroud)

这是代码:

import numpy as np
import neurolab as nl

# Load input data
text = np.loadtxt('data_sq.txt')

# Separate it into datapoints and labels
data = text[:, :1]
labels = text[:, 1:]

# Define a multilayer neural network with 2 hidden layers;
# First hidden layer consists of 10 neurons
# Second hidden layer consists of 6 neurons
# Output layer consists of 1 …
Run Code Online (Sandbox Code Playgroud)

artificial-intelligence machine-learning neural-network python-3.x tensorflow

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

损失函数减小,但列车组的精度在张量流中不会改变

我正在尝试使用tensorflow使用深度卷积神经网络实现简单的性别分类器.我找到了这个模型并实现了它.

def create_model_v2(data):

    cl1_desc = {'weights':weight_variable([7,7,3,96]), 'biases':bias_variable([96])}
    cl2_desc = {'weights':weight_variable([5,5,96,256]), 'biases':bias_variable([256])}
    cl3_desc = {'weights':weight_variable([3,3,256,384]), 'biases':bias_variable([384])}

    fc1_desc = {'weights':weight_variable([240000, 128]), 'biases':bias_variable([128])}
    fc2_desc = {'weights':weight_variable([128,128]), 'biases':bias_variable([128])}
    fc3_desc = {'weights':weight_variable([128,2]), 'biases':bias_variable([2])}

    cl1 = conv2d(data,cl1_desc['weights'] + cl1_desc['biases'])
    cl1 = tf.nn.relu(cl1)
    pl1 = max_pool_nxn(cl1,3,[1,2,2,1])
    lrm1 = tf.nn.local_response_normalization(pl1)

    cl2 = conv2d(lrm1, cl2_desc['weights'] + cl2_desc['biases'])
    cl2 = tf.nn.relu(cl2)
    pl2 = max_pool_nxn(cl2,3,[1,2,2,1])
    lrm2 = tf.nn.local_response_normalization(pl2)

    cl3 = conv2d(lrm2, cl3_desc['weights'] + cl3_desc['biases'])
    cl3 = tf.nn.relu(cl3)
    pl3 = max_pool_nxn(cl3,3,[1,2,2,1])

    fl = tf.contrib.layers.flatten(cl3)

    fc1 = tf.add(tf.matmul(fl, fc1_desc['weights']), fc1_desc['biases'])
    drp1 …
Run Code Online (Sandbox Code Playgroud)

loss neural-network deep-learning conv-neural-network tensorflow

8
推荐指数
1
解决办法
1941
查看次数

ValueError:无法将大小为30470400的数组重塑为形状(50,1104,104)

我正在尝试运行这个教程 http://emmanuelle.github.io/segmentation-of-3-d-tomography-images-with-python-and-scikit-image.html

我想用Python进行三维断层扫描图像分割.

我在开始时直接挣扎,重塑了形象.

这是代码:

%matplotlib inline

import numpy as np

import matplotlib.pyplot as plt 

import time as time 

data = np.fromfile('/data/data_l67/dalladas/Python3/Daten/Al8Cu_1000_g13_t4_200_250.vol', dtype=np.float32)

data.shape

(60940800,)

data.reshape((50,1104,104))
Run Code Online (Sandbox Code Playgroud)

-------------------------------------------------- ------------------------- ValueError Traceback(最近一次调用last)in()----> 1 data.reshape((50,1104) ,104))

ValueError:无法将大小为30470400的数组重塑为形状(50,1104,104)

有人可以帮帮我吗?

python numpy reshape

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

由于batch_size问题,有状态LSTM无法预测

我能够使用keras成功训练我的有状态LSTM.我的批量大小为60,我在网络中发送的每个输入都可以被batch_size整除.以下是我的代码段:

model = Sequential()
model.add(LSTM(80,input_shape = trainx.shape[1:],batch_input_shape=(60, 
trainx.shape[1], trainx.shape[2]),stateful=True,return_sequences=True))
model.add(Dropout(0.15))
model.add(LSTM(40,return_sequences=False))
model.add(Dense(40))
model.add(Dropout(0.3))
model.add(Dense(output_dim=1))
model.add(Activation("linear"))
keras.optimizers.RMSprop(lr=0.005, rho=0.9, epsilon=1e-08, decay=0.0)
model.compile(loss="mse", optimizer="rmsprop")
Run Code Online (Sandbox Code Playgroud)

我的训练线成功运行:

  model.fit(trainx[:3000,:],trainy[:3000],validation_split=0.1,shuffle=False,nb_epoch=9,batch_size=60)
Run Code Online (Sandbox Code Playgroud)

现在我尝试预测测试集再次被60整除,但是我得到了错误:

ValueError:在有状态网络中,您应该只传递带有多个样本的输入,这些样本可以除以批量大小.发现:240个样本.批量:32.

谁能告诉我上面有什么问题?我很困惑,尝试了很多东西,但没有任何帮助.

lstm keras tensorflow rnn

7
推荐指数
1
解决办法
1036
查看次数

有状态LSTM:何时重置状态?

给定具有维度的X (m个样本,n个序列和k个特征),以及具有维度的y个标签(m个样本,0/1):

假设我想训练一个有状态的LSTM(通过keras定义,其中"stateful = True"意味着每个样本的序列之间没有重置单元状态 - 如果我错了请纠正我!),是否应该重置状态在每个时期每个样本的基础上?

例:

for e in epoch:
    for m in X.shape[0]:          #for each sample
        for n in X.shape[1]:      #for each sequence
            #train_on_batch for model...
            #model.reset_states()  (1) I believe this is 'stateful = False'?
        #model.reset_states()      (2) wouldn't this make more sense?
    #model.reset_states()          (3) This is what I usually see...
Run Code Online (Sandbox Code Playgroud)

总之,我不确定是否在每个序列或每个时期之后重置状态(在所有m个样本都在X中训练之后).

建议非常感谢.

python machine-learning lstm keras recurrent-neural-network

7
推荐指数
1
解决办法
2241
查看次数

获取pytorch数据集的子集

我有一个网络,我想在一些数据集上训练(例如,说CIFAR10).我可以通过创建数据加载器对象

trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
                                          shuffle=True, num_workers=2)
Run Code Online (Sandbox Code Playgroud)

我的问题如下:假设我想进行几次不同的训练迭代.假设我首先想要在奇数位置的所有图像上训练网络,然后在偶数位置的所有图像上训练网络,依此类推.为此,我需要能够访问这些图像.不幸的是,它似乎trainset不允许这种访问.也就是说,尝试做trainset[:1000]或更多一般trainset[mask]会抛出错误.

我可以做

trainset.train_data=trainset.train_data[mask]
trainset.train_labels=trainset.train_labels[mask]
Run Code Online (Sandbox Code Playgroud)

然后

trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
                                              shuffle=True, num_workers=2)
Run Code Online (Sandbox Code Playgroud)

但是,这将迫使我在每次迭代中创建完整数据集的新副本(因为我已经更改,trainset.train_data所以我需要重新定义trainset).有没有办法避免它?

理想情况下,我希望有一些"等同"的东西

trainloader = torch.utils.data.DataLoader(trainset[mask], batch_size=4,
                                              shuffle=True, num_workers=2)
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network torch pytorch

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

卷积神经网络中的维数

我试图理解卷积神经网络中的维度是如何表现的.在下图中,输入是28×28矩阵,带有1个通道.然后有32个5乘5的过滤器(高度和宽度的步幅2).所以我理解结果是14乘14乘32.但是在下一个卷积层中,我们有64个5乘5的滤波器(再次使用步幅2).那么为什么结果是7乘7乘64而不是7乘7乘32*64?我们不是将64个过滤器中的每一个应用于32个通道中的每一个吗?

在此输入图像描述

convolution neural-network deep-learning conv-neural-network

6
推荐指数
1
解决办法
5998
查看次数