我正在运行TensorFlow,而我碰巧有一些产生NaN的东西.我想知道它是什么,但我不知道该怎么做.主要问题是在"正常"程序程序中,我只是在执行操作之前编写一个print语句.TensorFlow的问题在于我不能这样做,因为我首先声明(或定义)图形,因此向图形定义添加print语句没有帮助.是否有任何规则,建议,启发式方法,以及追踪可能导致NaN的原因的任何事情?
在这种情况下,我更准确地知道要查看哪一行,因为我有以下内容:
Delta_tilde = 2.0*tf.matmul(x,W) - tf.add(WW, XX) #note this quantity should always be positive because its pair-wise euclidian distance
Z = tf.sqrt(Delta_tilde)
Z = Transform(Z) # potentially some transform, currently I have it to return Z for debugging (the identity)
Z = tf.pow(Z, 2.0)
A = tf.exp(Z)
Run Code Online (Sandbox Code Playgroud)
当这一行存在时,我知道它返回由我的摘要编写者声明的NaN.为什么是这样?有没有办法至少探索Z在其平方根后具有什么价值?
对于我发布的具体示例,我试过tf.Print(0,Z)但没有成功,它什么都没打印.如:
Delta_tilde = 2.0*tf.matmul(x,W) - tf.add(WW, XX) #note this quantity should always be positive because its pair-wise euclidian distance
Z = tf.sqrt(Delta_tilde)
tf.Print(0,[Z]) # <-------- TF PRINT STATMENT
Z …Run Code Online (Sandbox Code Playgroud) python machine-learning neural-network conv-neural-network tensorflow
我正在使用Keras(与Theano)来训练我的CNN模型.有谁知道如何在我的C++应用程序中使用它?有没有人尝试类似的东西?我有想法写一些python代码,它将生成一个带有网络功能的c ++代码 - 有什么建议吗?
我正在研究一种图像类增量分类器方法,使用CNN作为特征提取器和一个完全连接的块进行分类.
首先,我对每个训练有素的VGG网络进行了微调,以完成一项新任务.一旦网络被训练用于新任务,我就为每个班级存储一些示例,以避免在新班级可用时忘记.
当某些类可用时,我必须计算样本的每个输出,包括新类的示例.现在为旧类的输出添加零,并在新类输出上添加与每个新类对应的标签,我有新标签,即:如果有3个新类输入....
旧班类型输出: [0.1, 0.05, 0.79, ..., 0 0 0]
新类类型输出:[0.1, 0.09, 0.3, 0.4, ..., 1 0 0]**最后的输出对应于类.
我的问题是,我如何改变自定义的损失函数来训练新的类?我想要实现的损失函数定义为:
蒸馏损失对应于旧类别的输出以避免遗忘,而分类损失对应于新类别.
如果你能给我一些代码样本来改变keras中的损失函数会很好.
谢谢!!!!!
computer-vision deep-learning conv-neural-network keras loss-function
我知道批量标准化通过将激活转向单位高斯分布,从而有助于更快的训练,从而解决消失的梯度问题.批量标准行为在训练时使用不同(使用每批的平均值/ var)和测试时间(使用训练阶段的最终运行平均值/ var).
另一方面,实例规范化作为对比度规范化,如本文中提到的https://arxiv.org/abs/1607.08022.作者提到输出风格化图像应该不依赖于输入内容图像的对比度,因此实例规范化有所帮助.
但是,我们不应该使用实例规范化进行图像分类,其中类标签不应该依赖于输入图像的对比度.我还没有看到任何使用实例规范化的纸张来进行批量归一化以进行分类.这是什么原因?此外,可以并且应该一起使用批处理和实例规范化.我渴望在何时使用哪种规范化方面获得直观和理论上的理解.
machine-learning computer-vision neural-network conv-neural-network batch-normalization
我是TensorFlow的新手.我正在寻找有关图像识别的帮助,我可以在那里训练自己的图像数据集.
有没有训练新数据集的例子?
该conv2d_transpose()操作的文档没有清楚地解释它的作用:
conv2d的转置.
在Deconvolutional Networks之后,此操作有时称为"反卷积" ,但实际上是conv2d的转置(渐变)而不是实际的反卷积.
我查看了文档指出的文件,但没有帮助.
这个操作有什么作用以及为什么要使用它的例子?
我目前正在尝试制作一个程序,仅根据其外观区分腐烂的橙子和可食用的橙子.为此,我计划使用卷积神经网络训练腐烂的橙子和普通的橙子.经过一番搜索,我只能找到一个约数据库.黑色背景上的150个烂橙子和150个普通橙子(http://www.cofilab.com/downloads/).显然,机器学习模型至少需要几千个橙子才能达到90%左右的精度.但是,我可以用某种方式改变这150种橙子来制作更多的橙子照片吗?通过改变,我的意思是在柑橘类水果上添加不同浓度的橙色,以形成"不同的橙色".这是训练神经网络的有效方法吗?
machine-learning computer-vision training-data neural-network conv-neural-network
我正在使用Lasagne为MNIST数据集创建CNN.我正密切关注这个例子:卷积神经网络和Python特征提取.
我目前拥有的CNN架构(不包括任何丢失层)是:
NeuralNet(
layers=[('input', layers.InputLayer), # Input Layer
('conv2d1', layers.Conv2DLayer), # Convolutional Layer
('maxpool1', layers.MaxPool2DLayer), # 2D Max Pooling Layer
('conv2d2', layers.Conv2DLayer), # Convolutional Layer
('maxpool2', layers.MaxPool2DLayer), # 2D Max Pooling Layer
('dense', layers.DenseLayer), # Fully connected layer
('output', layers.DenseLayer), # Output Layer
],
# input layer
input_shape=(None, 1, 28, 28),
# layer conv2d1
conv2d1_num_filters=32,
conv2d1_filter_size=(5, 5),
conv2d1_nonlinearity=lasagne.nonlinearities.rectify,
# layer maxpool1
maxpool1_pool_size=(2, 2),
# layer conv2d2
conv2d2_num_filters=32,
conv2d2_filter_size=(3, 3),
conv2d2_nonlinearity=lasagne.nonlinearities.rectify,
# layer maxpool2
maxpool2_pool_size=(2, 2),
# Fully Connected …Run Code Online (Sandbox Code Playgroud) neural-network deep-learning conv-neural-network lasagne nolearn
我正在尝试使用该函数可视化tensorflow中卷积层的输出tf.image_summary.我已经在其他情况下成功使用它(例如可视化输入图像),但是在这里正确地重塑输出有一些困难.我有以下转换层:
img_size = 256
x_image = tf.reshape(x, [-1,img_size, img_size,1], "sketch_image")
W_conv1 = weight_variable([5, 5, 1, 32])
b_conv1 = bias_variable([32])
h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)
Run Code Online (Sandbox Code Playgroud)
所以输出h_conv1会有形状[-1, img_size, img_size, 32].只是使用tf.image_summary("first_conv", tf.reshape(h_conv1, [-1, img_size, img_size, 1]))不考虑32个不同的内核,所以我基本上在这里切换不同的功能图.
我怎样才能正确地重塑它们?或者是否有另一个帮助函数可用于在摘要中包含此输出?
我知道在1-d情况下,两个矢量之间的卷积a可以被计算为
b,也可作为在之间的乘积conv(a, b)和T_a,其中b是用于相应的托普利兹矩阵T_a.
是否有可能将这个想法扩展到2-D?
给定a和a = [5 1 3; 1 1 2; 2 1 3]是否有可能b=[4 3; 1 2]在Toeplitz矩阵中进行转换a并T_a在1-D情况下计算矩阵矩阵乘积?
convolution matrix-multiplication neural-network deep-learning conv-neural-network