我为项目实现的kmeans聚类算法有以下设置:
import numpy as np
import scipy
import sys
import random
import matplotlib.pyplot as plt
import operator
class KMeansClass:
#takes in an npArray like object
def __init__(self,dataset,k):
self.dataset=np.array(dataset)
#initialize mins to maximum possible value
self.min_x = sys.maxint
self.min_y = sys.maxint
#initialize maxs to minimum possible value
self.max_x = -(sys.maxint)-1
self.max_y = -(sys.maxint)-1
self.k = k
#a is the coefficient matrix that is continually updated as the centroids of the clusters change respectively.
# It is an mxk matrix where each …Run Code Online (Sandbox Code Playgroud) 我需要训练一个双向LSTM模型以识别离散语音(单个数字从0到9),我已经录制了100个扬声器的语音。接下来我该怎么办?(假设我将它们分成单个的.wav文件,每个文件包含一个数字)我将使用mfcc作为网络功能。
此外,如果我要使用支持CTC(连接主义者时间分类)的库,我想知道数据集的差异。
speech-recognition unsupervised-learning recurrent-neural-network
Keras中有没有办法指定不需要传递目标数据的损失函数?
我尝试指定一个y_true省略参数的损失函数,如下所示:
def custom_loss(y_pred):
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
Traceback (most recent call last):
File "siamese.py", line 234, in <module>
model.compile(loss=custom_loss,optimizer=Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0))
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 911, in compile
sample_weight, mask)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 436, in weighted
score_array = fn(y_true, y_pred)
TypeError: custom_loss() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)
然后我尝试fit()在不指定任何目标数据的情况下调用:
model.fit(x=[x_train,x_train_warped, affines], batch_size = bs, epochs=1)
Run Code Online (Sandbox Code Playgroud)
但看起来不传递任何目标数据会导致错误:
Traceback (most recent call last):
File "siamese.py", line 264, in <module>
model.fit(x=[x_train,x_train_warped, affines], batch_size = bs, epochs=1)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1435, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Keras 中的 Hebbian 更新来实现一个无监督的 ANN。我在这里找到了一个由 Dan Saunders 制作的自定义 Hebbian 层 - https://github.com/djsaunde/rinns_python/blob/master/hebbian/hebbian.py (我希望在这里询问关于另一个人的代码的问题不是糟糕的形式)
在我发现在 repo 中使用此层的示例中,此层用作 Dense/Conv 层之间的中间层,但我想仅使用 Hebbian 层构建网络。
在这个实现中,有两个关键的事情让我感到困惑:
似乎输入暗淡和输出暗淡必须相同才能使该层正常工作。为什么会是这种情况,我该怎么做才能使它们与众不同?
为什么权重矩阵的对角线设置为零?它说这是为了“确保没有神经元与自身横向连接”,但我认为连接权重在前一层和当前层之间,而不是当前层和自身之间。
下面是 Hebbian 层实现的代码:
from keras import backend as K
from keras.engine.topology import Layer
import numpy as np
import tensorflow as tf
np.set_printoptions(threshold=np.nan)
sess = tf.Session()
class Hebbian(Layer):
def __init__(self, output_dim, lmbda=1.0, eta=0.0005, connectivity='random', connectivity_prob=0.25, **kwargs):
'''
Constructor for the Hebbian learning layer.
args:
output_dim - The shape of the output / activations computed by the layer. …Run Code Online (Sandbox Code Playgroud) python neural-network unsupervised-learning keras tensorflow
我正在尝试使用 BERT 解决文档排名问题。我的任务很简单。我必须对输入文档进行相似度排名。这里唯一的问题是我没有标签 - 所以它更像是一个定性分析。
我正在尝试一系列文档表示技术——主要是 word2vec、para2vec 和 BERT。
对于 BERT,我遇到了Hugging face - Pytorch库。我微调了 bert-base-uncased 模型,大约有 150,000 个文档。我运行了 5 个 epoch,批量大小为 16,最大序列长度为 128。但是,如果我比较 Bert 表示与 word2vec 表示的性能,出于某种原因,word2vec 现在对我来说表现更好。对于 BERT,我使用最后四层来获取表示。
我不太确定为什么微调模型不起作用。我读了这个文件,而这个其他链接也是说,BERT执行以及何时微调的分类任务。但是,由于我没有标签,因此我按照论文中的方法对其进行了微调 - 以无监督的方式。
此外,我的文件长度差异很大。所以我现在正在向他们发送明智的句子。最后,无论如何我必须对词嵌入进行平均以获得句子嵌入。关于更好方法的任何想法?我还在这里读到- 有不同的方法可以对词嵌入进行池化以获得固定的嵌入。想知道是否有比较哪种池化技术效果更好?
对更好地训练 BERT 或更好的池化方法的任何帮助将不胜感激!
machine-learning unsupervised-learning word2vec deep-learning bert-language-model
fasttext 官方网站 (fasttext.cc) 上的示例(与单词表示相关)表明,可以计算使用 cbow(或skip-gram 模型)导出的向量(简而言之,在无监督学习模型上)的最近邻。据称,这可以使用get_nearest_neighbors模型 ( model.get_nearest_neighbors) 上的函数来完成。然而,当我尝试执行该操作时,Python (3.7.) 向我显示了一条消息,即对于无监督学习模型,fasttext 中不存在此函数,事实上,当我查看 fasttext 帮助时,我没有看到此函数。唯一存在的类似函数是模型上的谓词(model.predict(其中指定 k)),但这只能在监督学习模型上完成。
谁能向我解释发生了什么事,并帮助我解决这个问题?有什么方法可以计算 fasttext 中无监督学习模型的最近邻居吗?:-)
我面临着基于相似性的图像聚类问题,而不知道聚类的数量。理想情况下,我想实现类似于此http://cs231n.github.io/assets/cnnvis/tsne.jpeg的东西(http://cs231n.github.io/understanding-cnn/这张图片是卷积神经网络的结果网络,它代表它学到的群体)
因为我对它们的分类不感兴趣(我不知道类别),所以我最感兴趣的是它们的“视觉”属性:颜色、形状、渐变等。我发现很多文章建议使用 DBSCAN、t-SNE 或甚至是 k 均值,但有更好的解决方案吗?有人建议使用 HOG 变换,但说实话,不知道如何将它们缝合在一起。
那么,总而言之,如何根据图像的颜色和形状属性将图像分离(在 2D 平面上,分组、文件夹等) ?
cluster-analysis machine-learning image-processing computer-vision unsupervised-learning
我一直在尝试使用 LASSO 进行无监督特征选择(通过删除类列)。数据集包括分类(因子)和连续(数字)变量。链接在这里。我构建了一个设计矩阵,使用model.matrix()它为每个级别的分类变量创建虚拟变量。
dataset <- read.xlsx("./hepatitis.data.xlsx", sheet = "hepatitis", na.strings = "")
names_df <- names(dataset)
formula_LASSO <- as.formula(paste("~ 0 +", paste(names_df, collapse = " + ")))
LASSO_df <- model.matrix(object = formula_LASSO, data = dataset, contrasts.arg = lapply(dataset[ ,sapply(dataset, is.factor)], contrasts, contrasts = FALSE ))
### Group LASSO using gglasso package
gglasso_group <- c(1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, …Run Code Online (Sandbox Code Playgroud) 我有个问题。我正在合作k-means并希望找到最佳的集群。不幸的是,我的数据集太大,无法应用silhouette 。是否可以选择调整此代码并将 替换silhouette为Inertia?
多维控制器
from sklearn.cluster import KMeans
import numpy as np
from sklearn.metrics import silhouette_score
import matplotlib as mpl
import matplotlib.pyplot as plt
X = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0],
[10, 2], [10, 4], [10, 0],
[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0],
[10, 2], [10, 4], [10, 0],
[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, …Run Code Online (Sandbox Code Playgroud) python cluster-analysis machine-learning k-means unsupervised-learning
python ×4
k-means ×2
keras ×2
algorithm ×1
fasttext ×1
optimization ×1
r ×1
scipy ×1
tensorflow ×1
word2vec ×1