我有一个问题类似于这里提出的问题: 融合几个关键点的简单方法.我想用它们的坐标平均值替换彼此靠近的点.细胞的接近程度由用户指定(我说的是欧几里德距离).
在我的情况下,我有很多积分(约100万).这种方法很有效,但是因为它使用了双循环,所以非常耗时.
是否有更快的方法来检测和融合numpy 2d阵列中的近点?
为了完整,我添加了一个例子:
points=array([[ 382.49056159, 640.1731949 ],
[ 496.44669161, 655.8583119 ],
[ 1255.64762859, 672.99699399],
[ 1070.16520917, 688.33538171],
[ 318.89390168, 718.05989421],
[ 259.7106383 , 822.2 ],
[ 141.52574427, 28.68594436],
[ 1061.13573287, 28.7094536 ],
[ 820.57417943, 84.27702407],
[ 806.71416007, 108.50307828]])
Run Code Online (Sandbox Code Playgroud)
下面可以看到点的散点图.红色圆圈表示彼此靠近的点(在这种情况下,阵列中最后两个点之间的距离为27.91).因此,如果用户指定最小距离为30,则应融合这些点.
在熔丝功能的输出中,最后的点被融合.这看起来像:
#output
array([[ 382.49056159, 640.1731949 ],
[ 496.44669161, 655.8583119 ],
[ 1255.64762859, 672.99699399],
[ 1070.16520917, 688.33538171],
[ 318.89390168, 718.05989421],
[ 259.7106383 , 822.2 ],
[ 141.52574427, 28.68594436],
[ 1061.13573287, 28.7094536 ],
[ 813.64416975, 96.390051175]])
Run Code Online (Sandbox Code Playgroud) 我正在使用 R 中的 snow 包在多个内核上调用 python 脚本。我想要的是将进度打印到控制台。使用cat(),message()或print()在我的函数中没有给出任何输出。这使得很难跟踪我的功能进度。
是否可以在 clusterApply 或 clusterMap 函数中将输出打印到命令行?
这是我当前的脚本:
library(snow)
library(rlecuyer)
# Files to process
filenames=1:10
# Process function
processfunc=function(filename,filenames){
len_names=length(filenames) #Length of filenames
index = match(filename, filenames) #Index of current file
cat(paste('Processing input files:',format(round(index/len_names*100,2),nsmall=2),'% At:',filename)) # print progress
# system(paste('python','D:/pythonscript.py',filename))
}
corenr=7
cl = makeCluster(rep('localhost', corenr), 'SOCK')
clusterExport(cl, list("processfunc"))
clusterEvalQ(cl, library(stringr))
clusterSetupRNG(cl)
clusterMap(cl,function(x,filenames) processfunc(x,filenames),filenames,MoreArgs = list(filenames=filenames))
stopCluster(cl)
Run Code Online (Sandbox Code Playgroud) 我试图在训练有素的网络中获取图层的值。我可以将该层作为 TensorFlow Tensor,但我无法以数组形状访问其值:
from keras.models import load_model
model = load_model('./model.h5')
layer_dict = dict([(layer.name, layer) for layer in model.layers])
layer_name = 'block5_sepconv1_act'
filter_index = 0
layer_output = layer_dict['model_1'][layer_name].output
# <tf.Tensor 'block5_sepconv1_act/Relu:0' shape=(?, 16, 16, 728) dtype=float32>
layer_filter = layer_output[:, :, :, filter_index]
# <tf.Tensor 'strided_slice_11:0' shape=(?, 16, 16) dtype=float32>
# how do I get the 16x16 values ??
Run Code Online (Sandbox Code Playgroud) 我是 Keras 新手,我正在尝试创建需要在纸牌游戏上学习的网络。它需要 93 个二进制输入,其中隐藏层有 40 个神经元和一个计算分数(从 0 到 25)的单个输出神经元。
model = Sequential()
model.add(Dense(input_dim=93, units=40, activation="sigmoid"))
model.add(Dense(units=2, activation="linear"))
sgd = optimizers.SGD(lr=0.01, clipvalue=0.5)
model.compile(loss="mse", optimizer=sgd, learning_rate=0.01)
Run Code Online (Sandbox Code Playgroud)
我首先尝试计算(进行前向传播)93 个输入
这是“s.toInputs()”
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 …
我在训练神经网络批次与Keras 2.0包Python.以下是有关数据和培训参数的一些信息:
以下是以下代码的一些日志:
for i in range(epochs):
print("train_model:: starting epoch {0}/{1}".format(i + 1, epochs))
model.fit_generator(generator=batch_generator(data_train, target_train, batch_size),
steps_per_epoch=num_of_batches,
epochs=1,
verbose=1)
Run Code Online (Sandbox Code Playgroud)
(部分)日志:
train_model:: starting epoch 1/3
Epoch 1/1
1/406 [..............................] - ETA: 11726s - loss: 0.7993 - acc: 0.5996
2/406 [..............................] - ETA: 11237s - loss: 0.7260 - acc: 0.6587
3/406 [..............................] - ETA: 14136s - loss: 0.6619 - acc: 0.7279
404/406 [============================>.] - …Run Code Online (Sandbox Code Playgroud) 我已经在 Anaconda 环境中使用 pip 安装了 Keras 和 tensorflow,但是当我在 tensorflow 后台运行 Keras 程序时,它给出了错误No module named tensorflow。你能帮忙吗?
文件"/home/susheel/LearnPython/local/lib/python2.7/site-packages/keras/models.py",第848行,适合引发TypeError('无法识别的关键字参数:'+ str(kwargs))TypeError:无法识别的关键字参数:{'show_accuracy':True}
虽然我试图在深度学习中使用CNN找到Yelp Data Academic.json的情绪.我收到了上述错误,我在numpy错误中遇到了它,但我没有解决任何人可以帮助怎么做
我有多个numpy 2-d数组,我想比较行.我的函数的输出应该是一个numpy二维数组,表示三个输入数组的所有行.我希望能够检测到第一次出现行,每秒或第三个重复行应该在输出中标记为False.单个数组中不可能有重复的行.
如果有可能我想避免使用循环,因为它们会降低计算速度.
例:
array1 = array([[444, 427],
[444, 428],
[444, 429],
[444, 430],
[445, 421]], dtype=uint64)
array2 = array([[446, 427],
[446, 440],
[444, 429],
[444, 432],
[445, 421]], dtype=uint64)
array3 = array([[447, 427],
[446, 441],
[444, 429],
[444, 432],
[445, 421]], dtype=uint64)
# output
array([[True, True, True, True, True],
[ True, True, False, True, False],
[ True, True, False, False, False]], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我在keras中使用改编的LeNet模型进行二进制分类.我有大约250,000个训练样本,比例为60/40.我的模型训练得很好.第一个时期的准确率达到97%,损失为0.07.在10个时期之后,准确度超过99%,损失0.01.我正在使用CheckPointer来保存模型.
大约在第11个时期,准确度下降到55%左右,损失大约6个.如何,这可能吗?是因为模型不能更精确,它试图找到更好的权重,但完全没有这样做?
我的模型是对LeNet模型的改编:
lenet_model = models.Sequential()
lenet_model.add(Convolution2D(filters=filt_size, kernel_size=(kern_size, kern_size), padding='valid',\
input_shape=input_shape))
lenet_model.add(Activation('relu'))
lenet_model.add(BatchNormalization())
lenet_model.add(MaxPooling2D(pool_size=(maxpool_size, maxpool_size)))
lenet_model.add(Convolution2D(filters=64, kernel_size=(kern_size, kern_size), padding='valid'))
lenet_model.add(Activation('relu'))
lenet_model.add(BatchNormalization())
lenet_model.add(MaxPooling2D(pool_size=(maxpool_size, maxpool_size)))
lenet_model.add(Convolution2D(filters=128, kernel_size=(kern_size, kern_size), padding='valid'))
lenet_model.add(Activation('relu'))
lenet_model.add(BatchNormalization())
lenet_model.add(MaxPooling2D(pool_size=(maxpool_size, maxpool_size)))
lenet_model.add(Flatten())
lenet_model.add(Dense(1024, kernel_initializer='uniform'))
lenet_model.add(Activation('relu'))
lenet_model.add(Dense(512, kernel_initializer='uniform'))
lenet_model.add(Activation('relu'))
lenet_model.add(Dropout(0.2))
lenet_model.add(Dense(n_classes, kernel_initializer='uniform'))
lenet_model.add(Activation('softmax'))
lenet_model.compile(loss='binary_crossentropy', optimizer=Adam(), metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud) I'm trying to create a page with two rows, where the height of each row is a certain percentage of the window height (say 40 and 60%). Whereas the width of elements can be easily controlled with the use of columns, I can't seem to find a similar solution for height.
Here is a little example app:
library(shiny)
ui <- navbarPage('',
tabPanel("page 1",
fluidPage(
fluidRow(
style='height:400px',
column(7, "text"),
column(5, "other text")),
fluidRow('some more text'))
),
tabPanel("page 2"),
tabPanel("page 3")
) …Run Code Online (Sandbox Code Playgroud)