小编Ron*_*hen的帖子

Tensorflow:使用tf.expand_dims时?

Tensorflow教程包括使用tf.expand_dims向张量添加"批量维度".我已经阅读了这个函数的文档,但它对我来说仍然是相当神秘的.有谁知道在什么情况下必须使用这个?

我的代码如下.我的意图是根据预测箱和实际箱之间的距离计算损失.(例如,如果predictedBin = 10truthBin = 7然后binDistanceLoss = 3).

batch_size = tf.size(truthValues_placeholder)
labels = tf.expand_dims(truthValues_placeholder, 1)
predictedBin = tf.argmax(logits)
binDistanceLoss = tf.abs(tf.sub(labels, logits))
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我需要申请tf.expand_dimspredictedBinbinDistanceLoss?提前致谢.

tensorflow

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

Tensorflow的CUDA_HOME路径

Tensorflow Linux安装指导说:

确保按照NVIDIA文档中的说明创建CUDA_HOME环境变量.

我在cuIDN v6的NVIDIA说明或NVIDIA CUDA Toolkit安装说明中找不到任何关于CUDA_HOME的提及.有谁知道如何在linux上设置这个变量?

cuda tensorflow cudnn

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

什么是tensorflow.compat.as_str()?

Google/Udemy Tensorflow教程中,有以下代码:

import tensorflow as tf
...
def read_data(filename):
    """Extract the first file enclosed in a zip file as a list of words"""
    with zipfile.ZipFile(filename) as f:
    data = tf.compat.as_str(f.read(f.namelist()[0])).split()
return data
Run Code Online (Sandbox Code Playgroud)

这执行得很好,但我无法compat.as_str在Tensorflow文档或其他任何地方找到.

Q1:做compat.as_str什么?

Q2:这个张量流compat库是否记录在某处?

Q3:这是对tensorflow库的调用,那么它是如何以及为什么在普通的python代码中工作,而不是在张量流图中呢?即我认为tensorflow库调用必须在张量流图定义块内:

graph = tf.Graph()
with graph.as_default()
    ... tensorflow function calls here ...
Run Code Online (Sandbox Code Playgroud)

我正在运行python 2.7.

python tensorflow

19
推荐指数
2
解决办法
7197
查看次数

多元回归神经网络损失函数

我在Tensorflow中使用完全连接的多层神经网络进行多元回归.(y1,y2)给定输入向量的网络预测2个连续浮点变量(x1,x2,...xN),即网络有2个输出节点.有2个输出,网络似乎没有收敛.我的损失函数本质上是预测和真值向量之间的L2距离(每个包含2个标量):

loss = tf.nn.l2_loss(tf.sub(prediction, truthValues_placeholder)) + L2regularizationLoss 
Run Code Online (Sandbox Code Playgroud)

我正在使用L2正则化,丢失正则化,我的激活函数是tanh.

我的问题:L2距离是计算多变量网络输出损耗的正确方法吗?是否需要一些技巧才能使多元回归网络收敛(与单变量网络和分类器相对)?

linear-regression neural-network tensorflow

11
推荐指数
1
解决办法
1075
查看次数

Python pickle调用cPickle?

我是Python的新手.我正在调整Python 2.X中的其他人的代码到3.5.代码通过cPickle加载文件.我将所有"cPickle"事件更改为"pickle",因为我理解pickle取代了3.5中的cPickle.我得到了这个执行错误:

NameError: name 'cPickle' is not defined
Run Code Online (Sandbox Code Playgroud)

相关代码:

import pickle
import gzip
...
def load_data():
    f = gzip.open('../data/mnist.pkl.gz', 'rb')
    training_data, validation_data, test_data = pickle.load(f, fix_imports=True)
    f.close()
    return (training_data, validation_data, test_data)
Run Code Online (Sandbox Code Playgroud)

pickle.loadload_data()另一个函数调用时,该行发生错误.但是,a)既没有cPicklecpickle没有出现在项目中任何地方的任何源文件中(全局搜索)和b)如果我load_data()在Python shell中单独运行行,则不会发生错误(但是,我确实得到另一个数据格式错误).正在pickle打电话cPickle,如果是这样,我怎么阻止它?

Shell:Python 3.5.0 | Anaconda 2.4.0(x86_64)| (默认,2015年10月20日,14:39:26)[GCC 4.2.1(Apple Inc. build 5577)]在达尔文

IDE:IntelliJ 15.0.1,Python 3.5.0,anaconda

不清楚如何进行.任何帮助赞赏.谢谢.

python intellij-idea pickle python-3.x

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

Numba可以和Tensorflow一起使用吗?

Numba可以用来编译与Tensorflow接口的Python代码吗?即Tensorflow宇宙之外的计算将与Numba一起运行以获得速度.我没有找到任何有关如何执行此操作的资源.

python numpy numba tensorflow

9
推荐指数
2
解决办法
2070
查看次数

无法从Python六库中导入

无法从六进口任何东西.这两行都会产生错误:

from six.moves.urllib.request import urlretrieve
Run Code Online (Sandbox Code Playgroud)

- > Unresolved reference "urlretrieve"

from six.moves import cPickle as pickle
Run Code Online (Sandbox Code Playgroud)

- > Unresolved reference "cPickle"

OSX 10.11.5.IntelliJ 2016.1.2,PyCharm 2016.1.3,Python 2.7.11,Six 1.10.0.

我尝试修复的内容(对于有效代码和其他帖子,每个PyCharm显示未解析的引用错误):

  • 切换Python解释器
  • IntelliJ:删除了想法文件
  • IDE - >使高速缓存/重新启动无效
  • 创建了一个具有相同源的全新项目
  • 交换式IDE(IntelliJ - > PyCharm)
  • 已验证六是当前:

_

$ sudo pip install -U six
Requirement already up-to-date: six in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/six-1.10.0-py2.7.egg
Run Code Online (Sandbox Code Playgroud)

我试过Python SDKs:

Python 2.7.11 (/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7)
Python 3.5.1 (/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5)
Python 2.7.10 (/usr/local/bin/python2.7)
Run Code Online (Sandbox Code Playgroud)

没有任何效果.欢迎帮助!谢谢.

---------- 2016年5月23日更新-------------------------------

从命令行运行"from six.moves ..."导入行不会产生错误.命令行调用Python 2.7.11.PyCharm也使用Python 2.7.11,而PyCharm也显示有六个可用 - 参见第一个屏幕截图.项目中没有.pyc文件,只有main.py. 在此输入图像描述 奇怪的是,main.py在PyCharm中运行时没有错误; 打印"Hello"行(参见第二个屏幕截图). 文件运行正常 此屏幕截图显示设置中的项目解释程序: …

python intellij-idea pycharm six

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

Tensorflow Metagraph Fundamentals

我想训练我的Tensorflow模型,冻结快照,然后使用新的输入数据以前馈模式(无需进一步培训)运行它.问题:

  1. tf.train.export_meta_graphtf.train.import_meta_graph正确的工具吗?
  2. 我是否需要collection_list在快照中包含我想要包含的所有变量的名称?(对我来说最简单的就是包含所有内容.)
  3. Tensorflow文档说:" 如果未collection_list指定,则将导出模型中的所有集合." 这是否意味着如果我没有指定变量,collection_list那么模型中的所有变量都会被导出,因为它们位于默认集合中?
  4. 该Tensorflow文件说:" 为了一个Python对象序列化和从MetaGraphDef,Python的类必须实现to_proto()和from_proto()方法,并使用register_proto_function系统注册. "这是否意味着,to_proto()from_proto()绝只添加到我已定义并希望导出的类中?如果我只使用标准的Python数据类型(int,float,list,dict)那么这是无关紧要的吗?

提前致谢.

tensorflow

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

Keras 重置层数

Keras受让人递增ID号相同的类型,例如层max_pooling1d_7max_pooling1d_8max_pooling1d_9等。我的代码每次迭代构建了一个新的模式,开始model = Sequential(),然后通过添加图层model.add()。即使每个循环都创建了一个新的 Sequential 对象,层 ID 编号仍会从前一个循环继续递增。由于我的进程长时间运行,这些 ID 号可能会变得非常大。我担心这会导致一些问题。为什么 ID 没有被重置model = Sequential()?有没有办法重置它们?在每个循环之后,我不再使用层 ID 号并且可以丢弃它们,但是如何呢?我正在使用 Tensorflow 后端。

keras tensorflow keras-layer

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

Python multiprocessing.Manager命名空间-性能下降?

我正在使用Python多重处理将任务拆分为多个进程。我的CPU有4个物理核和8个虚拟核。我希望所有内核的利用率均为100%,但是当使用4个子进程池时,我在1个内核上观察到100%,在3个内核上观察到9%multiprocessing.Manager Namespace。子进程仅从共享名称空间读取(而不是写入)。也许共享的命名空间不允许并发读取访问-我是否需要以某种方式指定不应进行锁定?

在我的实际代码中,共享命名空间很大,包括大列表和numpy数组,因此另一个原因可能是创建它所需的时间。共享命名空间是只创建一次,还是每次创建新的子进程时都创建(假设命名空间中的数据没有变化)?

示例代码:

import multiprocessing
import worker
mgr = multiprocessing.Manager()
multiProcShared = mgr.Namespace()
multiProcShared.a = 25
multiProcShared.b = 40
multiProcShared.c = 10
pool = multiprocessing.Pool(4)
allResults = []
max = xrange(100)
for segmentNum in max:
    allResults.append(pool.apply_async(worker.worker, args=(multiProcShared, segmentNum)))
Run Code Online (Sandbox Code Playgroud)

更新:我怀疑由于我正在将大数据传递给子进程,因此数据切换可能会产生大量开销。我认为数据是先腌制然后再腌制?如果是这样,那么python多处理性能是否会随着传递给子进程的数据大小而降低?是否根据数据是通过共享名称空间还是通过函数参数传递来更改?

python python-multiprocessing

6
推荐指数
0
解决办法
726
查看次数