Questions tagged «tensorflow»

Google开发的Python深度学习库。对于任何题为(a)涉及张量流或作为问题的关键部分或预期答案的主题问题,请使用此标签;&(b)不仅仅是关于如何使用张量流。

5
具有指数衰减的Adam优化器
在大多数Tensorflow代码中,我已经看到Adam Optimizer的学习率恒定1e-4(即0.0001)。该代码通常如下所示: ...build the model... # Add the optimizer train_op = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) # Add the ops to initialize variables. These will include # the optimizer slots added by AdamOptimizer(). init_op = tf.initialize_all_variables() # launch the graph in a session sess = tf.Session() # Actually intialize the variables sess.run(init_op) # now …

1
softmax_cross_entropy_with_logits与softmax_cross_entropy_with_logits_v2有何不同?
具体来说,我想我对此语句感到疑惑: TensorFlow的未来主要版本默认将允许梯度流入backprop上的标签输入中。 使用时会显示出来tf.nn.softmax_cross_entropy_with_logits。在同一封信中,它敦促我看看tf.nn.softmax_cross_entropy_with_logits_v2。我浏览了文档,但只说明了tf.nn.softmax_cross_entropy_with_logits_v2: 反向传播将同时出现在logit和标签中。要禁止反向传播到标签中,请在将标签张量馈入此函数之前将其张量传递给stop_gradients。 而不是tf.nn.softmax_cross_entropy_with_logits: 反向传播只会在logit中发生。 对于该主题来说是一个新手(我正在尝试通过一些基本教程进行学习),这些陈述并不十分清楚。我对反向传播有一个较浅的了解,但是前面的陈述实际上是什么意思?反向传播和标签如何连接?与tf.nn.softmax_cross_entropy_with_logits_v2原始作品相比,这将如何改变我的工作方式?

3
机器学习:我应该使用分类交叉熵还是二进制交叉熵损失进行二进制预测?
首先,我意识到如果需要执行二进制预测,则必须通过执行一次热编码来创建至少两个类。它是否正确?但是,二元互熵是否仅适用于只有一个类别的预测?如果我使用大多数图书馆(例如TensorFlow)中常见的分类交叉熵损失,会不会有明显的不同? 实际上,分类交叉熵和二进制交叉熵之间的确切区别是什么?我从未在TensorFlow中看到过二进制交叉熵的实现,所以我认为也许绝对分类的效果同样好。

1
回归的CNN架构?
我一直在研究回归问题,其中输入是图像,标签是80到350之间的连续值。图像是发生反应后的某些化学物质。原来的颜色表示剩余的另一种化学品的浓度,这就是模型要输出的-该化学品的浓度。图像可以旋转,翻转,镜像,并且预期的输出应该仍然相同。这种分析是在真实的实验室中完成的(非常专业的机器使用颜色分析来输出化学药品的浓度,就像我正在训练该模型一样)。 到目前为止,我仅试验了大致基于VGG(conv-conv-conv-pool块的多个序列)的模型。在尝试使用较新的体系结构(Inception,ResNets等)之前,我想研究一下是否存在其他更常用的图像回归体系结构。 数据集如下所示: 该数据集包含约5,000个250x250样本,我将其大小调整为64x64,因此训练更加容易。一旦找到有前途的体系结构,我将尝试更大分辨率的图像。 到目前为止,我的最佳模型在训练集和验证集上的均方误差约为0.3,这在我的用例中还远远不能接受。 到目前为止,我最好的模型如下所示: // pseudo code x = conv2d(x, filters=32, kernel=[3,3])->batch_norm()->relu() x = conv2d(x, filters=32, kernel=[3,3])->batch_norm()->relu() x = conv2d(x, filters=32, kernel=[3,3])->batch_norm()->relu() x = maxpool(x, size=[2,2], stride=[2,2]) x = conv2d(x, filters=64, kernel=[3,3])->batch_norm()->relu() x = conv2d(x, filters=64, kernel=[3,3])->batch_norm()->relu() x = conv2d(x, filters=64, kernel=[3,3])->batch_norm()->relu() x = maxpool(x, size=[2,2], stride=[2,2]) x …

5
了解LSTM单位与细胞
我学习LSTM已有一段时间了。我从较高的角度了解一切。但是,要使用Tensorflow实施它们,我注意到BasicLSTMCell需要许多单位(即num_units)参数。 从这个 LSTMs的非常详尽的解释,我已经收集单个LSTM单元是以下情况之一 实际上是GRU单位 我假设参数num_units的BasicLSTMCell指的是我们要多少,这些在层挂钩到对方。 这就提出了问题-在这种情况下什么是“单元”?“单元”是否等效于普通前馈神经网络中的一层?

3
在Tensorflow中构建自动编码器以超越PCA
Hinton和Salakhutdinov在利用神经网络降低数据的维数方面,《科学》(Science) 2006年提出了通过使用深度自动编码器来实现非线性PCA的方法。我曾多次尝试使用Tensorflow构建和训练PCA自动编码器,但我从未获得过比线性PCA更好的结果。 如何有效地训练自动编码器? (后来由@amoeba编辑:这个问题的原始版本包含Python Tensorflow代码,这些代码无法正常运行。您可以在编辑历史记录中找到它。)

1
反向模式自动微分的分步示例
不知道这个问题是否属于这里,但它与优化中的梯度方法密切相关,在这里似乎很热门。无论如何,如果您认为其他社区对此主题有更好的专业知识,请随时迁移。 简而言之,我正在寻找反向模式自动微分的分步示例。关于该主题的文献不多,并且在不了解其背后的理论的情况下,很难理解现有的实现(例如TensorFlow中的内容)。因此,如果有人能详细显示我们传入的内容,我们如何处理它以及从计算图中得出的内容,我将非常感激。 我最难解决的几个问题: 种子 -为什么我们完全需要它们? 反向差异化规则 -我知道如何进行差异化,但是我们如何向后退?例如,在从示例本节,我们怎么知道w2¯=w3¯w1w2¯=w3¯w1\bar{w_2}=\bar{w_3}w_1? 我们只使用符号还是通过实际值?例如,在相同的示例,是wiwiw_i和wi¯wi¯\bar{w_i}符号或值?

2
变分自动编码器中如何权衡KLD损耗与重构损耗
在我见过的VAE的几乎所有代码示例中,损失函数的定义如下(这是张量流代码,但是我看到theano,torch等类似。它也适用于卷积网络,但这也不太相关) ,仅影响轴的总和): # latent space loss. KL divergence between latent space distribution and unit gaussian, for each batch. # first half of eq 10. in https://arxiv.org/abs/1312.6114 kl_loss = -0.5 * tf.reduce_sum(1 + log_sigma_sq - tf.square(mu) - tf.exp(log_sigma_sq), axis=1) # reconstruction error, using pixel-wise L2 loss, for each batch rec_loss = …

1
如何解释TensorBoard中TensorFlow给出的直方图?
我最近正在跑步并学习张量流,并得到了一些我不知道如何解释的直方图。通常我将条形的高度视为频率(或相对频率/计数)。但是,没有像通常的直方图那样没有条形的事实以及事物被阴影化的事实使我感到困惑。似乎一次也有很多行/高度? 是否有人知道如何解释以下图表(也许提供了很好的建议,它们通常可以帮助阅读张量流中的直方图): 也许还有其他值得讨论的事情,如果原始变量是矢量,矩阵或张量,那么张量流实际上显示了什么,就像每个坐标的直方图一样?另外,也许引用如何获取这些信息以使人们自给自足会很好,因为我现在在文档上很难找到有用的东西。也许一些教程示例等?也许一些关于操纵它们的建议也会很好。 作为参考,这里摘录了给出此代码的代码: (X_train, Y_train, X_cv, Y_cv, X_test, Y_test) = data_lib.get_data_from_file(file_name='./f_1d_cos_no_noise_data.npz') (N_train,D) = X_train.shape D1 = 24 (N_test,D_out) = Y_test.shape W1 = tf.Variable( tf.truncated_normal([D,D1], mean=0.0, stddev=std), name='W1') # (D x D1) S1 = tf.Variable( tf.constant(100.0, shape=[]), name='S1') # (1 x 1) C1 = tf.Variable( tf.truncated_normal([D1,1], mean=0.0, stddev=0.1), name='C1' ) …

3
Relu vs Sigmoid vs Softmax作为隐藏层神经元
我正在使用Tensorflow制作的只有一个隐藏层的简单神经网络,然后尝试对隐藏层进行不同的激活: 露露 乙状结肠 Softmax(嗯,通常在最后一层使用softmax。) Relu提供最佳的列车精度和验证精度。我不确定如何解释这一点。 我们知道Relu具有良好的品质,例如稀疏性(例如无梯度消失)等,但是 问:Relu神经元通常比乙状结肠/ softmax神经元好吗?我们是否应该几乎总是在NN(甚至CNN)中使用Relu神经元? 我认为,如果我们担心过度拟合,则更复杂的神经元会带来更好的结果,至少可以提高训练的准确性。 谢谢PS:该代码基本上来自“ Udacity-Machine learning -assignment2”,它是使用简单的1层-NN识别notMNIST的。 batch_size = 128 graph = tf.Graph() with graph.as_default(): # Input data. tf_train_dataset = tf.placeholder(tf.float32, shape=(batch_size, image_size * image_size)) tf_train_labels = tf.placeholder(tf.float32, shape=(batch_size, num_labels)) tf_valid_dataset = tf.constant(valid_dataset) tf_test_dataset = tf.constant(test_dataset) # hidden layer hidden_nodes = 1024 hidden_weights = …

1
自动编码器的损耗功能
我正在尝试一些自动编码器,并使用tensorflow创建了一个试图重建MNIST数据集的模型。 我的网络非常简单:X,e1,e2,d1,Y,其中e1和e2是编码层,d2和Y是解码层(Y是重构的输出)。 X具有784个单位,e1具有100个单位,e2具有50个单位,d1具有100个单位,Y具有784个单位。 我将S型曲线用作层e1,e2,d1和Y的激活函数。输入在[0,1]中,因此应该是输出。 好吧,我尝试使用交叉熵作为损失函数,但输出始终是斑点,并且我注意到从X到e1的权重始终会收敛到零值矩阵。 另一方面,将均方误差用作损失函数,会产生不错的结果,我现在可以重构输入。 为什么呢?我以为我可以将这些值解释为概率,因此可以使用交叉熵,但是显然我做错了。


5
深度学习:我如何知道哪些变量很重要?
在神经网络术语方面(y =权重* x +偏差),我如何知道哪些变量比其他变量更重要? 我有一个具有10个输入的神经网络,1个具有20个节点的隐藏层和1个具有1个节点的输出层。我不确定如何知道哪些输入变量比其他变量更有影响力。我在想的是,如果输入很重要,那么它将与第一层具有高度加权的连接,但是权重可能为正也可能为负。因此,我可能要做的是取输入权重的绝对值并将其求和。更重要的输入将具有更高的总和。 因此,例如,如果头发长度是输入之一,则它应该与下一层中的每个节点具有1个连接,因此有20个连接(因此有20个权重)。我可以仅取每个权重的绝对值并将它们相加吗?

3
神经网络中样本,时间步长和特征之间的差异
我正在浏览LSTM神经网络上的以下博客:http : //machinelearningmastery.com/understanding-stateful-lstm-recurrent-neural-networks-python-keras/ 作者针对LSTM的不同配置将输入向量X重塑为[样本,时间步长,特征]。 作者写道 实际上,字母序列是一个特征的时间步长,而不是单独特征的一个时间步长。我们为网络提供了更多的上下文,但是没有像预期的那样提供更多的顺序 这是什么意思?

2
通常做法是将批次的平均损失而不是总和减到最小?
Tensorflow有一个有关对CIFAR-10进行分类的示例教程。在本教程中,批次中的平均交叉熵损失最小。 def loss(logits, labels): """Add L2Loss to all the trainable variables. Add summary for for "Loss" and "Loss/avg". Args: logits: Logits from inference(). labels: Labels from distorted_inputs or inputs(). 1-D tensor of shape [batch_size] Returns: Loss tensor of type float. """ # Calculate the average cross entropy loss across the …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.