分类问题,例如逻辑回归或多项逻辑回归,优化了交叉熵损失.通常,交叉熵层遵循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
我已经开始学习Tensorflow了.我正在使用Pycharm,我的环境是Ubuntu 16.04.我正在按照教程.我交叉检查了一下.它是最新的.我不知道这个错误的原因.
来自numpy.lib.arraypad import _validate_lengths
ImportError:无法导入名称'_validate_lengths'
需要提示才能解决此错误.谢谢.
import tensorflow as tf
from skimage import transform
from skimage import data
import matplotlib.pyplot as plt
import os
import numpy as np
from skimage.color import rgb2gray
import random
#listdir: This method returns a list containing the names of the entries in the directory given by path.
# Return True if path is an existing directory
def load_data(data_dir):
# Get all subdirectories of data_dir. Each represents a label.
directories = [d for …Run Code Online (Sandbox Code Playgroud) 我是卷积神经网络的新手,只是想知道特征映射以及如何对图像进行卷积以提取特征.我很高兴知道在CNN中应用批量标准化的一些细节.
我读了本文https://arxiv.org/pdf/1502.03167v3.pdf和可以理解的BN算法应用于数据,但最终他们提到,当应用到CNN的轻微修改是必需的:
对于卷积层,我们还希望归一化遵循卷积属性 - 以便在不同位置对同一特征映射的不同元素以相同方式进行归一化.为实现这一目标,我们联合规范了所有地点的小批量激活.在Alg.1,我们令B是该组中跨越小批量的两个元件和空间位置的特征地图的所有值的 - 因此对于小批量大小p×Q的大小为m和特征映射的,我们使用的短跑运动员 - 小型m'= | B |的小批量 = m·pq.我们学习每个特征图的一对参数γ(k)和β(k),而不是每次激活.ALG.类似地修改图2,使得在推理期间,BN变换对给定特征图中的每个激活应用相同的线性变换.
当他们说"以不同位置的相同特征地图的不同元素以相同方式标准化"时,我完全感到困惑 "
我知道哪些特征映射意味着什么,不同的元素是每个特征映射中的权重.但我无法理解什么位置或空间位置意味着什么.
我根本无法理解下面的句子 "在Alg.1中,我们让B成为特征图中所有值的集合,跨越小批量和空间位置的元素"
如果有人冷静地阐述并用更简单的术语解释我,我会很高兴的
machine-learning computer-vision deep-learning conv-neural-network batch-normalization
我知道批量标准化通过将激活转向单位高斯分布,从而有助于更快的训练,从而解决消失的梯度问题.批量标准行为在训练时使用不同(使用每批的平均值/ var)和测试时间(使用训练阶段的最终运行平均值/ var).
另一方面,实例规范化作为对比度规范化,如本文中提到的https://arxiv.org/abs/1607.08022.作者提到输出风格化图像应该不依赖于输入内容图像的对比度,因此实例规范化有所帮助.
但是,我们不应该使用实例规范化进行图像分类,其中类标签不应该依赖于输入图像的对比度.我还没有看到任何使用实例规范化的纸张来进行批量归一化以进行分类.这是什么原因?此外,可以并且应该一起使用批处理和实例规范化.我渴望在何时使用哪种规范化方面获得直观和理论上的理解.
machine-learning computer-vision neural-network conv-neural-network batch-normalization
我已经为原始信号分类任务构建了CLDNN(卷积,LSTM,深度神经网络)结构.
每个训练时期运行大约90秒,超参数似乎很难优化.
我一直在研究各种方法来优化超参数(例如随机或网格搜索),并发现贝叶斯优化.
虽然我还没有完全理解优化算法,但我喜欢它会对我有很大帮助.
我想问几个关于优化任务的问题.
我非常感谢对此问题的任何见解.
optimization machine-learning bayesian deep-learning tensorflow
偶尔我会看到一些模型正在使用SpatialDropout1D而不是Dropout.例如,在词性标注神经网络中,他们使用:
model = Sequential()
model.add(Embedding(s_vocabsize, EMBED_SIZE,
input_length=MAX_SEQLEN))
model.add(SpatialDropout1D(0.2)) ##This
model.add(GRU(HIDDEN_SIZE, dropout=0.2, recurrent_dropout=0.2))
model.add(RepeatVector(MAX_SEQLEN))
model.add(GRU(HIDDEN_SIZE, return_sequences=True))
model.add(TimeDistributed(Dense(t_vocabsize)))
model.add(Activation("softmax"))
Run Code Online (Sandbox Code Playgroud)
根据Keras的文件,它说:
此版本执行与Dropout相同的功能,但它会丢弃整个1D功能图而不是单个元素.
但是,我无法理解entrie 1D功能的含义.更具体地说,我无法SpatialDropout1D在quora中解释的相同模型中进行可视化.有人可以使用与quora相同的模型来解释这个概念吗?
另外,在什么情况下我们会用SpatialDropout1D而不是Dropout?
machine-learning deep-learning conv-neural-network keras dropout
我正在学习tensorflow,我从tensorflow网站上获取了以下代码.根据我的理解,axis = 0表示行,axis = 1表示列.
他们如何获得评论中提到的输出?我根据我对##的想法提到了输出.
import tensorflow as tf
x = tf.constant([[1, 1, 1], [1, 1, 1]])
tf.reduce_sum(x, 0) # [2, 2, 2] ## [3, 3]
tf.reduce_sum(x, 1) # [3, 3] ##[2, 2, 2]
tf.reduce_sum(x, [0, 1]) # 6 ## Didn't understood at all.
Run Code Online (Sandbox Code Playgroud) 我可以在输入层后立即使用批量规范化层而不规范化我的数据吗?我希望得到类似的效果/表现吗?
在keras功能中它将是这样的:
x = Input (...)
x = Batchnorm(...)(x)
...
Run Code Online (Sandbox Code Playgroud) artificial-intelligence machine-learning neural-network keras batch-normalization
我尝试从pip安装:
pip3 install --user --no-cache https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.0-cp36-cp36m-linux_x86_64.whl
Run Code Online (Sandbox Code Playgroud)
然后尝试导入并得到:
Using TensorFlow backend.
/usr/lib64/python3.6/importlib/_bootstrap.py:205: RuntimeWarning:
compiletime version 3.5 of module
'tensorflow.python.framework.fast_tensor_util' does not match runtime
version 3.6
return f(*args, **kwds)
2017-11-10 09:35:01.206112: I
tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports
instructions that this TensorFlow binary was not compiled to use: SSE4.1
SSE4.2 AVX
Run Code Online (Sandbox Code Playgroud)
问题:
我不明白为什么轮子说3.6,但我得到关于3.5的警告
我想编译为我的CPU优化,所以我可以使用pip从源而不是从二进制轮安装?
我在想使用交叉验证尝试选择超参数(如正规化例如)或可能培养出车型的多个初始化,然后选择具有最高交叉验证准确度模型.实现k折或CV是简单的,但繁琐/恼人的(特别是如果我试图培养在不同的CPU,GPU的,甚至不同的计算机等不同的型号).我希望像TensorFlow这样的库可以为用户实现这样的东西,这样我们就不需要对同一个东西进行100次编码了.因此,TensorFlow是否有可以帮助我进行交叉验证的库或其他东西?
作为更新,似乎可以使用scikit learn或其他东西来做到这一点.如果是这种情况,那么如果有人可以提供一个简单的NN培训示例和scikit的交叉验证,那就太棒了!不知道这是否可以扩展到多个cpus,gpus,cluster等.
python machine-learning scikit-learn cross-validation tensorflow
tensorflow ×5
python ×4
keras ×2
bayesian ×1
dropout ×1
linux ×1
numpy ×1
optimization ×1
pip ×1
python-3.x ×1
reduce ×1
scikit-image ×1
scikit-learn ×1
tensor ×1