小编Eng*_*ero的帖子

Tensorflow:model_with_buckets模型中freeze_graph.py的"output_node_names"是什么?

我培养了tf.nn.seq2seq.model_with_buckets具有seq2seq = tf.nn.seq2seq.embedding_attention_seq2seq非常相似的例子Tensorflow教程.

现在我想使用冻结图表freeze_graph.py.如何在模型中找到"output_node_names"?

tensorflow recurrent-neural-network

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

使用可变大小的输入训练完全卷积的神经网络在Keras/TensorFlow中花费了不合理的长时间

我正在尝试实现一个FCNN用于图像分类,可以接受可变大小的输入.该模型使用TensorFlow后端在Keras中构建.

考虑以下玩具示例:

model = Sequential()

# width and height are None because we want to process images of variable size 
# nb_channels is either 1 (grayscale) or 3 (rgb)
model.add(Convolution2D(32, 3, 3, input_shape=(nb_channels, None, None), border_mode='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Convolution2D(32, 3, 3, border_mode='same'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Convolution2D(16, 1, 1))
model.add(Activation('relu'))

model.add(Convolution2D(8, 1, 1))
model.add(Activation('relu'))

# reduce the number of dimensions to the number of classes
model.add(Convolution2D(nb_classses, 1, 1))
model.add(Activation('relu'))

# do global pooling to yield one value per class
model.add(GlobalAveragePooling2D())

model.add(Activation('softmax')) …
Run Code Online (Sandbox Code Playgroud)

conv-neural-network keras tensorflow

13
推荐指数
1
解决办法
1186
查看次数

在python中获取基类类型

class a:
    pass

class b(a):
    pass

c = b()
type(c) == a #returns False
Run Code Online (Sandbox Code Playgroud)

是否有类型()的替代方法可以检查对象是否从类继承?

python

12
推荐指数
1
解决办法
9192
查看次数

具有具体方法的 Python 抽象类

我想知道在python(3)中,抽象类是否可以具有具体方法。
虽然这似乎有效,但我不确定这是在 python 中执行此操作的正确方法:

from abc import ABCMeta, abstractclassmethod, abstractmethod 

class MyBaseClass:
    __metaclass__ = ABCMeta

    @property
    @abstractmethod
    def foo_prop(self):
        """Define me"""
        pass

    @abstractclassmethod
    def get_something(cls, param1, param2, param3):
        """This is a class method, override it with @classmethod """
        pass

    @classmethod
    def get(cls, param1, param2):
        """Concrete method calling an abstract class method and an abstract property""" 
        if param1 < cls.foo_prop:
            raise Exception()
        param3 = param1 + 42
        item = cls.get_something(param1, param2, param3)
        return item


class MyConcreteClassA(MyBaseClass):
    """Implementation """

    foo_prop = 99 …
Run Code Online (Sandbox Code Playgroud)

python oop inheritance abstract-class class

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

从TFRecord保存和读取可变大小列表

将稀疏矢量存储到TFRecord的最佳方法是什么?我的稀疏向量只包含1和0所以我决定只保存'ones'所在的索引,如下所示:

example = tf.train.Example(
        features=tf.train.Features(
            feature={
                'label': self._int64_feature(label),
                'features' : self._int64_feature_list(values)
            }
        )
    )
Run Code Online (Sandbox Code Playgroud)

这里values是包含'ones'索引的列表.这个values数组有时包含数百个元素,有时根本没有.之后,我只是将序列化示例保存到tfrecord.后来,我正在读这样的tfrecord:

features = tf.parse_single_example(
    serialized_example,
    features={
        # We know the length of both fields. If not the
        # tf.VarLenFeature could be used
        'label': tf.FixedLenFeature([], dtype=tf.int64),
        'features': tf.VarLenFeature(dtype=tf.int64)
    }
)

label = features['label']
values = features['features']
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为values数组被识别为稀疏数组,我没有得到我保存的数据.在tfrecords中存储稀疏张量以及如何读取它的最佳方法是什么?

tensorflow

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

消耗迭代器的最快(最Pythonic)方式

我很好奇消耗迭代器的最快方法是什么,以及最恐怖的方式.

例如,假设我想创建一个带有map内置函数的迭代器,它会积累一些副作用.我实际上并不关心结果map,只是副作用,所以我希望尽可能少地使用开销或样板来完成迭代.就像是:

my_set = set()
my_map = map(lambda x, y: my_set.add((x, y)), my_x, my_y)
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我只是想通过迭代器来积累内容my_set,并且my_set只是一个空集,直到我实际运行my_map.就像是:

for _ in my_map:
    pass
Run Code Online (Sandbox Code Playgroud)

或赤身裸体

[_ for _ in my_map]
Run Code Online (Sandbox Code Playgroud)

工作,但他们都觉得笨重.是否有更多的Pythonic方法来确保迭代器快速迭代,以便您可以从一些副作用中受益?


基准

我在上面测试了上面的两种方法:

my_x = np.random.randint(100, size=int(1e6))
my_y = np.random.randint(100, size=int(1e6))
Run Code Online (Sandbox Code Playgroud)

my_setmy_map如上所定义.我用timeit获得了以下结果:

for _ in my_map:
    pass
468 ms ± 20.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

[_ for _ in my_map]
476 …
Run Code Online (Sandbox Code Playgroud)

python optimization iterator python-3.x

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

如果a和b超出索引范围,为什么python为什么允许list [a:b]但不允许list [a]?

我只是一个谦虚的蚱grass编码,并且有一个简单的问题。

让:

x = ['this','is','a','list']
Run Code Online (Sandbox Code Playgroud)

怎么来的:

x[100:101]
Run Code Online (Sandbox Code Playgroud)

输出一个空列表,如预期的那样:

x[100]
Run Code Online (Sandbox Code Playgroud)

是一个错误吗?同上字符串,请,谢谢。

python string list

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

Python NumPy log2 vs MATLAB

我是一个广泛使用MATLAB的Python新手.我正在转换一些log2在MATLAB 中使用的代码,我使用了NumPy log2函数,得到的结果与我预期的这么小的数字不同.我很惊讶,因为数字的精确度应该相同(即MATLAB double vs NumPy float64).

MATLAB代码

a = log2(64);

--> a=6
Run Code Online (Sandbox Code Playgroud)

基础Python代码

import math

a = math.log2(64)

--> a = 6.0
Run Code Online (Sandbox Code Playgroud)

NumPy代码

import numpy as np

a = np.log2(64)

--> a = 5.9999999999999991
Run Code Online (Sandbox Code Playgroud)

修改后的NumPy代码

import numpy as np

a = np.log(64) / np.log(2)

--> a = 6.0
Run Code Online (Sandbox Code Playgroud)

因此,本机NumPy log2函数会产生导致代码失败的结果,因为它检查数字是2的幂.预期结果正好是6,本机Python log2函数和修改后的NumPy代码都使用了对数的属性.我是否在使用NumPy log2功能做错了什么?我现在改变了代码以使用原生Python log2,但我只是想知道答案.

python matlab numpy

9
推荐指数
1
解决办法
1497
查看次数

Tensorboard中的设备放置未知

我想使用以下代码调查张量板中的设备放置,以便在摘要中生成图形

# Build the summary operation based on the TF collection of Summaries.
summary_op = tf.merge_all_summaries()
saver = tf.train.Saver(tf.all_variables())
summary_writer = tf.train.SummaryWriter(log_directory, graph_def=sess.graph_def)
Run Code Online (Sandbox Code Playgroud)

这适用于显示图表中定义的图表和摘要.但是当在张量板中选择"设备放置"时,所有节点都被分配给"未知设备".我是否需要以其他方式转储设备放置?

tensorflow tensorboard

9
推荐指数
1
解决办法
2079
查看次数

Tensorflow从元图中打印所有占位符变量名称

我有张量流模型,我有.meta和检查点文件.我试图打印模型所需的所有占位符,而不查看构建模型的代码,这样我就可以在不知道模型是如何创建的情况下构造输入feed_dict.供参考,这里是模型构造代码(在另一个文件中)

def save():
    import tensorflow as tf
    v1 = tf.placeholder(tf.float32, name="v1") 
    v2 = tf.placeholder(tf.float32, name="v2")
    v3 = tf.multiply(v1, v2)
    vx = tf.Variable(10.0, name="vx")
    v4 = tf.add(v3, vx, name="v4")
    saver = tf.train.Saver()
    sess = tf.Session()
    sess.run(tf.initialize_all_variables())
    sess.run(vx.assign(tf.add(vx, vx)))
    result = sess.run(v4, feed_dict={v1:12.0, v2:3.3})
    print(result)
    saver.save(sess, "./model_ex1")
Run Code Online (Sandbox Code Playgroud)

现在在另一个文件中,我有以下代码要恢复

def restore():
    import tensorflow as tf
    saver = tf.train.import_meta_graph("./model_ex1.meta")
    print(tf.get_default_graph().get_all_collection_keys())
    for v in tf.get_default_graph().get_collection("variables"):
        print(v)
    for v in tf.get_default_graph().get_collection("trainable_variables"):
        print(v)
    sess = tf.Session()
    saver.restore(sess, "./model_ex1")
    result = sess.run("v4:0", feed_dict={"v1:0": 12.0, "v2:0": 4.0})
    print(result)
Run Code Online (Sandbox Code Playgroud)

但是,当我打印所有变量时,我不会在任何地方看到"v1:0"和"v2:0"作为变量名称.如何在不查看创建模型的代码的情况下识别占位符的张量名称?

tensorflow

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