我培养了tf.nn.seq2seq.model_with_buckets具有seq2seq = tf.nn.seq2seq.embedding_attention_seq2seq非常相似的例子Tensorflow教程.
现在我想使用冻结图表freeze_graph.py.如何在模型中找到"output_node_names"?
我正在尝试实现一个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) class a:
pass
class b(a):
pass
c = b()
type(c) == a #returns False
Run Code Online (Sandbox Code Playgroud)
是否有类型()的替代方法可以检查对象是否从类继承?
我想知道在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) 将稀疏矢量存储到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中存储稀疏张量以及如何读取它的最佳方法是什么?
我很好奇消耗迭代器的最快方法是什么,以及最恐怖的方式.
例如,假设我想创建一个带有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_set和my_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) 我只是一个谦虚的蚱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)
是一个错误吗?同上字符串,请,谢谢。
我是一个广泛使用MATLAB的Python新手.我正在转换一些log2在MATLAB 中使用的代码,我使用了NumPy log2函数,得到的结果与我预期的这么小的数字不同.我很惊讶,因为数字的精确度应该相同(即MATLAB double vs NumPy float64).
a = log2(64);
--> a=6
Run Code Online (Sandbox Code Playgroud)
import math
a = math.log2(64)
--> a = 6.0
Run Code Online (Sandbox Code Playgroud)
import numpy as np
a = np.log2(64)
--> a = 5.9999999999999991
Run Code Online (Sandbox Code Playgroud)
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,但我只是想知道答案.
我想使用以下代码调查张量板中的设备放置,以便在摘要中生成图形
# 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)
这适用于显示图表中定义的图表和摘要.但是当在张量板中选择"设备放置"时,所有节点都被分配给"未知设备".我是否需要以其他方式转储设备放置?
我有张量流模型,我有.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"作为变量名称.如何在不查看创建模型的代码的情况下识别占位符的张量名称?
python ×5
tensorflow ×5
class ×1
inheritance ×1
iterator ×1
keras ×1
list ×1
matlab ×1
numpy ×1
oop ×1
optimization ×1
python-3.x ×1
string ×1
tensorboard ×1