小编LJK*_*JKS的帖子

GPU上的Tensorflow OOM

我正在使用Tensorflow中的LSTM-RNN训练一些音乐数据,并遇到了一些我不理解的GPU内存分配问题:我遇到一个OOM,而实际上似乎还有足够的VRAM可用.一些背景:我正在研究Ubuntu Gnome 16.04,使用的是GTX1060 6GB,Intel Xeon E3-1231V3和8GB RAM.所以现在首先是我能理解的错误消息的一部分,并且我将在最后为可能要求它提供帮助的任何人添加整个错误消息:

I tensorflow/core/common_runtime/bfc_allocator.cc:696] 8 Chunks of size 256 totalling 2.0KiB I tensorflow/core/common_runtime/bfc_allocator.cc:696] 1 Chunks of size 1280 totalling 1.2KiB I tensorflow/core/common_runtime/bfc_allocator.cc:696] 5 Chunks of size 44288 totalling 216.2KiB I tensorflow/core/common_runtime/bfc_allocator.cc:696] 5 Chunks of size 56064 totalling 273.8KiB I tensorflow/core/common_runtime/bfc_allocator.cc:696] 4 Chunks of size 154350080 totalling 588.80MiB I tensorflow/core/common_runtime/bfc_allocator.cc:696] 3 Chunks of size 813400064 totalling 2.27GiB I tensorflow/core/common_runtime/bfc_allocator.cc:696] 1 Chunks of size 1612612352 totalling 1.50GiB I tensorflow/core/common_runtime/bfc_allocator.cc:700] Sum Total of in-use chunks: 4.35GiB I tensorflow/core/common_runtime/bfc_allocator.cc:702] …

gpu out-of-memory vram tensorflow

13
推荐指数
2
解决办法
3万
查看次数

tf.layers.dense()如何与更高暗淡的输入交互?

在tensorflow层中.dense(输入,单位,激活)实现具有任意激活功能的多层感知器层。

输出=激活(matmul(输入,权重)+偏差)

通常,输入的形状为shape = [batch_size,input_size],可能看起来像这样:(单位= 128,激活= tf.nn.relu是任意选择的)

inputx = tf.placeholder(float, shape=[batch_size, input_size])
dense_layer = tf.layers.dense(inputx, 128, tf.nn.relu)
Run Code Online (Sandbox Code Playgroud)

我没有找到任何有关如何输入高维输入的文档,例如,因为可能输入time_steps导致张量为shape = [time_step,batch_size,input_size]。这里想要的是将层应用于批次的每个元素的每个时间步的每个单个input_vector。换个说法,layers.dense()的内部矩阵应该简单地以numpy样式使用广播。我在这里期望的行为实际发生了什么?即是:

inputx = tf.placeholder(float, shape=[time_step, batch_size, input_size])
dense_layer = tf.layers.dense(inputx, 128, tf.nn.relu)
Run Code Online (Sandbox Code Playgroud)

在batch_size中的每个元素的每个time_step上,将密集层应用于大小为input_size的每个输入?然后这应该导致张量(在上面的density_layer中)的形状为[time_step,batch_size,128]我在问,例如tf.matmul不支持numpy风格的广播,所以我不确定张量流如何处理这些情况。

编辑:这篇文章是相关的,但最终不会回答我的问题

python tensorflow

8
推荐指数
1
解决办法
891
查看次数

ImportError:没有名为'matplotlib'的模块 - 使用Anaconda tensorflow环境

我只是想学习Tensorflow,但我对Python很新,所以我使用Anaconda我创建了一个conda环境:

$ conda create ?n tensorflow python =3.5
Run Code Online (Sandbox Code Playgroud)

当然我激活了我的conda环境

$ source activate tensorflow
Run Code Online (Sandbox Code Playgroud)

然后我在Spyder玩了一下,试图绘制一个MNIST数字(我的导师的复制粘贴代码经过多次测试),当然包括

import matplotlib.pyplot as plt
[...]
plt.plot(number)
Run Code Online (Sandbox Code Playgroud)

但用bash执行Python文件给了我:

(tensorflow) leon@leon-linux:~/ANNsCourse/Session1$ python helloWorld.py
Traceback (most recent call last):
  File "helloWorld.py", line 10, in <module>
    import matplotlib.pyplot as plt
ImportError: No module named 'matplotlib'
Run Code Online (Sandbox Code Playgroud)

我现在很困惑,因为(tensorflow)在bash中显然表示我的conda tensorflow环境有效(至少从我的理解).另外,根据我的理解,conda应该内置matplotlib,对吧?它还应该在我的conda tensorflow环境中加载它,对吧?这就是我的导师的幻灯片所说的

没有必要安装更多的软件包,如numpy或matplotlib,因为Anaconda已经包含了它们的当前版本.

以及我从Google Googled和StackOverflowed所能获得的东西.谷歌搜索和StackOverflowing都没有给我任何好的答案(也可能只是因为我还不够了解).

我最好的猜测是我仍然需要将matplotlib包含在我的tensorflow conda环境中,但这与我的导师和谷歌相矛盾,而我也不知道如何做到这一点.

编辑:conda list给了我matplotlib不在我的张量流环境中,所以我去了

conda install matplotlib
Run Code Online (Sandbox Code Playgroud)

我仍然担心我的conda tensorflow环境有问题,默认情况下matplotlib不应该在那里吗?它还告诉我:

Package plan for installation in environment /home/leon/.conda/envs/tensorflow:

The following NEW packages will be INSTALLED:

cycler:           0.10.0-py35_0 …
Run Code Online (Sandbox Code Playgroud)

python matplotlib importerror conda tensorflow

7
推荐指数
1
解决办法
9525
查看次数

在tf.train.AdamOptimizer中手动更改learning_rate

问题是,是否只是改变learning_rate参数tf.train.AdamOptimizer实际上会导致行为的任何变化:假设代码如下所示:

myLearnRate = 0.001
...
output = tf.someDataFlowGraph
trainLoss = tf.losses.someLoss(output)
trainStep = tf.train.AdamOptimizer(learning_rate=myLearnRate).minimize(trainLoss)
with tf.Session() as session:
    #first trainstep
    session.run(trainStep, feed_dict = {input:someData, target:someTarget})
    myLearnRate = myLearnRate * 0.1
    #second trainstep
    session.run(trainStep, feed_dict = {input:someData, target:someTarget})
Run Code Online (Sandbox Code Playgroud)

myLearnRate现在减少了trainStep吗?这是,只创建trainStep一次评估的节点:

trainStep = tf.train.AdamOptimizer(learning_rate=myLearnRate).minimize(trainLoss)
Run Code Online (Sandbox Code Playgroud)

或者是否每次评估session.run(train_step)?我怎么能AdamOptimizer在Tensorflow中检查我是否确实更改了Learnrate.

免责声明1:我知道手动更改LearnRate是不好的做法. 免责声明2:我知道有一个类似的问题,但它是通过输入张量来解决的,learnRate在每个trainStep(这里)更新.这让我对假设它只会用张量作为输入工作倾斜learning_rateAdamOptimizer,但我也不是确信这一点,我也能理解它背后的原因.

python machine-learning neural-network tensorflow

7
推荐指数
2
解决办法
3302
查看次数

tensorflow基本lstm_cell中trainable_weights和trainable_variables有什么区别?

在尝试使用此处记录的基本 LSTM 单元在 Tensorflow 中复制 LSTM 单元的权重时,我偶然发现了 trainable_weights 和 trainable_variables 属性。

可悲的是,源代码对于像我这样的菜鸟来说并没有真正提供信息。不过,一些实验确实产生了以下信息:两者都具有完全相同的布局,都是长度为 2 的列表,其中第一个条目是 tf.Variable 形状:(2*num_units, 4*num_units),第二个列表条目的形状为 (4*num_units,),其中 num_units 是初始化 BasicLSTMCell 的 num_units。我现在的直觉猜测是,第一个列表项是 lstm 的四个内部层的权重的串联,第二个项目是各个偏差的串联,显然符合这些偏差的预期大小。

现在的问题是,这些之间实际上是否有任何区别?我认为它们可能只是从 rnn_cell 类继承这些的结果?

lstm tensorflow

7
推荐指数
1
解决办法
3974
查看次数

Tensorflow LSTM-Cell的输出

(使用python)

我对Tensorflow LSTM-Implementation有一个疑问.目前在TF中有几种实现,但我使用:

cell = tf.contrib.rnn.BasicLSTMCell(n_units)
Run Code Online (Sandbox Code Playgroud)
  • 其中n_units是'并行'LSTM-Cells的数量.

然后得到我的输出我打电话:

 rnn_outputs, rnn_states = tf.nn.dynamic_rnn(cell, x,
                        initial_state=initial_state, time_major=False)
Run Code Online (Sandbox Code Playgroud)
  • 其中(as time_major=False)x的形状(batch_size, time_steps, input_length)
  • batch_size我的batch_size 在哪里
  • 这里time_steps是时间步我RNN将通过量
  • 其中input_length一个输入向量的长度(在一个特定批次的一个特定时间步长上送入网络的向量)

我希望rnn_outputs有形,(batch_size, time_steps, n_units, input_length)因为我没有指定另一个输出大小.文档nn.dynamic_rnn告诉我输出的形状(batch_size, input_length, cell.output_size).文档tf.contrib.rnn.BasicLSTMCell确实有一个属性output_size,默认为n_units(我使用的LSTM单元格的数量).

那么每个LSTM-Cell是否只为每个给定的时间步输出一个标量?我希望它输出一个输入向量长度的向量.从我现在的理解情况来看,情况似乎并非如此,所以我很困惑.你能告诉我是否是这种情况或我如何改变它以输出每个单个lstm-cell的输入矢量大小的矢量?

python output lstm tensorflow

6
推荐指数
1
解决办法
3039
查看次数

如何在另一个类中使用php类

我搜索了很多答案,但只找到了一个问题,即是否可以在另一个班级一个类和类似的东西.

所以有第一个文件,它是:

文档1:

class MyClass1 {

    private $myAttribute1;
    __construct(){
        this->myAttribute1 = 'blabla';
    }
}
Run Code Online (Sandbox Code Playgroud)

现在打电话给同一份文件

$myObject1 = new MyClass1();
Run Code Online (Sandbox Code Playgroud)

在NetBeans中完全正常工作.

同时当我构建另一个文档时,我们称之为Document2,并在那里构建另一个类MyClass1,Netbeans告诉我有一个问题:

书2:

myClass2 {
    $myAttribute2 = new myClass1(); 
}
Run Code Online (Sandbox Code Playgroud)

所以这在我的NetBeans中不起作用,只是告诉我'意想不到的新'.我如何使用MyClass1,myClass2因为这种方式不起作用?

php

2
推荐指数
1
解决办法
49
查看次数