分类问题,例如逻辑回归或多项逻辑回归,优化了交叉熵损失.通常,交叉熵层遵循softmax层,其产生概率分布.
在tensorflow中,至少有十几种不同的交叉熵损失函数:
tf.losses.softmax_cross_entropytf.losses.sparse_softmax_cross_entropytf.losses.sigmoid_cross_entropytf.contrib.losses.softmax_cross_entropytf.contrib.losses.sigmoid_cross_entropytf.nn.softmax_cross_entropy_with_logitstf.nn.sigmoid_cross_entropy_with_logits哪个只适用于二进制分类,哪个适用于多类问题?你何时应该使用sigmoid而不是softmax?如何在sparse功能与别人不同,为什么仅是它softmax?
相关(更多数学导向)讨论:交叉熵丛林.
machine-learning neural-network logistic-regression tensorflow cross-entropy
我正在尝试从心电图中读取图像并检测其中的每一个主波(P波,QRS波群和T波).现在我可以读取图像并得到一个像(4.2; 4.4; 4.9; 4.7; ...)这样的矢量代表心电图中的值,这是问题的一半.我需要一种算法,可以遍历此向量并检测每个波的开始和结束时间.
以下是其中一个图表的示例:

如果它们总是具有相同的尺寸会很容易,但它不是很有效,或者如果我知道心电图会有多少波,但它也会有所不同.有没有人有想法?
谢谢!
更新
我想要实现的例子:
鉴于波

我可以提取矢量
[0; 0; 20; 20; 20; 19; 18; 17; 17; 17; 17; 17; 16; 16; 16; 16; 16; 16; 16; 17; 17; 18; 19; 20; 21; 22; 23; 23; 23; 25; 25; 23; 22; 20; 19; 17; 16; 16; 14; 13; 14; 13; 13; 12; 12; 12; 12; 12; 11; 11; 10; 12; 16; 22; 31; 38; 45; 51; 47; 41; 33; 26; 21; 17; 17; 16; 16; 15; …
language-agnostic algorithm pattern-recognition signal-processing machine-learning
我正在寻找一种方法来计算层数和每层神经元的数量.作为输入,我只有输入向量的大小,输出向量的大小和trainig集的大小.
通常,通过尝试不同的网络拓扑并选择具有最小误差的网络来确定最佳网络.不幸的是我做不到.
artificial-intelligence machine-learning neural-network deep-learning
我注意到在培训期间经常出现这种情况NAN.
通常情况下,内部产品/完全连接或卷积层中的重量似乎会被引入.
这是因为梯度计算正在爆发吗?或者是因为重量初始化(如果是这样,为什么重量初始化会产生这种效果)?或者它可能是由输入数据的性质引起的?
这里的首要问题很简单:在培训期间发生NAN的最常见原因是什么?其次,有什么方法可以解决这个问题(为什么它们有效)?
machine-learning neural-network gradient-descent deep-learning caffe
如何从Keras中的HDF5文件加载模型?
我尝试了什么:
model = Sequential()
model.add(Dense(64, input_dim=14, init='uniform'))
model.add(LeakyReLU(alpha=0.3))
model.add(BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None))
model.add(Dropout(0.5))
model.add(Dense(64, init='uniform'))
model.add(LeakyReLU(alpha=0.3))
model.add(BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None))
model.add(Dropout(0.5))
model.add(Dense(2, init='uniform'))
model.add(Activation('softmax'))
sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy', optimizer=sgd)
checkpointer = ModelCheckpoint(filepath="/weights.hdf5", verbose=1, save_best_only=True)
model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2, callbacks=[checkpointer])
Run Code Online (Sandbox Code Playgroud)
上面的代码成功地将最佳模型保存到名为weights.hdf5的文件中.我想要做的是然后加载该模型.以下代码显示了我是如何尝试这样做的:
model2 = Sequential()
model2.load_weights("/Users/Desktop/SquareSpace/weights.hdf5")
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
IndexError Traceback (most recent call last)
<ipython-input-101-ec968f9e95c5> in <module>()
1 model2 = Sequential()
----> 2 model2.load_weights("/Users/Desktop/SquareSpace/weights.hdf5")
/Applications/anaconda/lib/python2.7/site-packages/keras/models.pyc in load_weights(self, filepath)
582 g = f['layer_{}'.format(k)]
583 weights …Run Code Online (Sandbox Code Playgroud) 我有三个维度的大量向量.我需要基于欧几里德距离对这些进行聚类,使得任何特定聚类中的所有向量彼此之间的欧几里德距离小于阈值"T".
我不知道有多少个集群存在.最后,可能存在不属于任何聚类的个体向量,因为其欧氏距离不小于空间中任何向量的"T".
这里应该使用哪些现有的算法/方法?
algorithm math artificial-intelligence cluster-analysis machine-learning
目前我使用以下代码:
callbacks = [
EarlyStopping(monitor='val_loss', patience=2, verbose=0),
ModelCheckpoint(kfold_weights_path, monitor='val_loss', save_best_only=True, verbose=0),
]
model.fit(X_train.astype('float32'), Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
shuffle=True, verbose=1, validation_data=(X_valid, Y_valid),
callbacks=callbacks)
Run Code Online (Sandbox Code Playgroud)
它告诉Keras在2个时期的损失没有改善时停止训练.但是我希望在损失变得小于某些常数"THR"之后停止训练:
if val_loss < THR:
break
Run Code Online (Sandbox Code Playgroud)
我在文档中看到有可能进行自己的回调:http: //keras.io/callbacks/ 但是没有找到如何停止训练过程.我需要一个建议.
python machine-learning neural-network conv-neural-network keras
假设我有一个Tensorflow张量.如何将张量的尺寸(形状)作为整数值?我知道有两种方法,tensor.get_shape()以及tf.shape(tensor),但我不能让形状值作为整int32数值.
例如,下面我创建了一个二维张量,我需要得到行数和列数,int32以便我可以调用reshape()以创建一个形状的张量(num_rows * num_cols, 1).但是,该方法tensor.get_shape()返回值作为Dimension类型,而不是int32.
import tensorflow as tf
import numpy as np
sess = tf.Session()
tensor = tf.convert_to_tensor(np.array([[1001,1002,1003],[3,4,5]]), dtype=tf.float32)
sess.run(tensor)
# array([[ 1001., 1002., 1003.],
# [ 3., 4., 5.]], dtype=float32)
tensor_shape = tensor.get_shape()
tensor_shape
# TensorShape([Dimension(2), Dimension(3)])
print tensor_shape
# (2, 3)
num_rows = tensor_shape[0] # ???
num_cols = tensor_shape[1] # ???
tensor2 = tf.reshape(tensor, (num_rows*num_cols, 1))
# Traceback (most …Run Code Online (Sandbox Code Playgroud) 我注意到在Keras中没有更多的weight_regularizer可用,并且取而代之的是有活动和内核规范化器.我想知道:
machine-learning ×10
keras ×3
python ×3
algorithm ×2
tensorflow ×2
caffe ×1
data-science ×1
keras-layer ×1
math ×1
nlp ×1
word2vec ×1