我目前正在TensorFlow中实现YOLO,我对于需要多少内存感到有些惊讶.在我的GPU上,我可以使用批量大小为64 的Darknet框架训练YOLO .在TensorFlow上,我只能使用批量大小为6,而8我已经用完了内存.对于测试阶段,我可以使用批量大小64运行而不会耗尽内存.
我想知道如何计算每个张量消耗的内存量?默认情况下,所有张量都保存在GPU中吗?我可以简单地将总内存消耗计算为*32位的形状吗?
我注意到,因为我使用动量,我的所有张量都有一个/Momentum张量.这可能也会占用大量内存吗?
我用一种方法扩充我的数据集distorted_inputs,非常类似于CIFAR-10教程中定义的方法.可能是这部分占据了大量的记忆吗?我相信Darknet会对CPU进行修改.
在张量流上的cifar10示例中,卷积层似乎没有重量衰减.实际上除了两个完全连接的层之外,任何层都没有重量衰减.这是一种常见做法吗?我认为重量衰减适用于所有重量(偏差除外).
作为参考,这里是相关代码(wd是重量衰减因子):
# conv1
with tf.variable_scope('conv1') as scope:
kernel = _variable_with_weight_decay('weights', shape=[5, 5, 3, 64],
stddev=1e-4, wd=0.0)
conv = tf.nn.conv2d(images, kernel, [1, 1, 1, 1], padding='SAME')
biases = _variable_on_cpu('biases', [64], tf.constant_initializer(0.0))
bias = tf.nn.bias_add(conv, biases)
conv1 = tf.nn.relu(bias, name=scope.name)
_activation_summary(conv1)
# pool1
pool1 = tf.nn.max_pool(conv1, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1],
padding='SAME', name='pool1')
# norm1
norm1 = tf.nn.lrn(pool1, 4, bias=1.0, alpha=0.001 / 9.0, beta=0.75,
name='norm1')
# conv2
with tf.variable_scope('conv2') as scope:
kernel = _variable_with_weight_decay('weights', …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用与通用外键的关系选择模型,但它没有按预期工作.
我认为使用代码可以更好地说明和理解
class ModelA(models.Model):
created = models.DateTimeField(auto_now_add=True)
class ModelB(models.Model):
instanceA = models.ForeignKey(ModelA)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey()
class ModelC(models.Model):
number = models.PositiveIntegerField()
bInstances = generic.GenericRelation(ModelB)
# Creating an instance of A and C
aInstance=ModelA.objects.create()
cInstance=ModelC.objects.create(number=3)
# Adding instance of C to the B_set of instance A
aInstance.modelb_set.add(content_object=cInstance)
# Select all ModelA instances that have C as content object? Does not work
whatIWant = ModelA.objects.filter(modelb__content_object=modelCInstance)
# Pseudo-solution, requires calling whatIWant.modelA
whatIWant = cInstance.bInstances.select_related("modelA")
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,我希望这条线有效:ModelA.objects.filter(modelb__content_object=modelCInstance)显然django不支持在过滤器关系上使用content_object.
提前致谢!
我的django应用程序上的模板有以下文件夹结构:
templates/
app/
model1/
model1_form.html
model2/
model2_form.html
Run Code Online (Sandbox Code Playgroud)
假设我使用的是model1和一个通用的ListView,现在它只搜索templates/app/model1_form.html.无论如何我可以告诉django他还应该搜索app /子文件夹吗?我不想手动设置模板名称和路径(template_name="templates/app/model1/model1_form.html").
在settings.py,我有:
import os.path
BASE_PATH = os.path.dirname(os.path.dirname(__file__))
TEMPLATE_DIRS = (
BASE_PATH+'/templates/',
)
Run Code Online (Sandbox Code Playgroud)
这是我的看法:
class HousesListView(ListView):
model = House
context_object_name = "house_list"
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我有一个logits尺寸张量[batch_size, num_rows, num_coordinates](即批次中的每个logit都是一个矩阵).在我的情况下,批量大小为2,有4行和4个坐标.
logits = tf.constant([[[10.0, 10.0, 20.0, 20.0],
[11.0, 10.0, 10.0, 30.0],
[12.0, 10.0, 10.0, 20.0],
[13.0, 10.0, 10.0, 20.0]],
[[14.0, 11.0, 21.0, 31.0],
[15.0, 11.0, 11.0, 21.0],
[16.0, 11.0, 11.0, 21.0],
[17.0, 11.0, 11.0, 21.0]]])
Run Code Online (Sandbox Code Playgroud)
我想选择第一批的第一行和第二行以及第二批的第二行和第四行.
indices = tf.constant([[0, 1], [1, 3]])
Run Code Online (Sandbox Code Playgroud)
所以期望的输出就是
logits = tf.constant([[[10.0, 10.0, 20.0, 20.0],
[11.0, 10.0, 10.0, 30.0]],
[[15.0, 11.0, 11.0, 21.0],
[17.0, 11.0, 11.0, 21.0]]])
Run Code Online (Sandbox Code Playgroud)
如何使用TensorFlow执行此操作?我尝试使用tf.gather(logits, indices)但它没有返回我的预期.谢谢!
希望你们新年快乐.
所以,我的问题是,记录行动的最佳方式是什么.让我用一个例子解释一下,假设我们有这些实体:
User
Friend (用户是另一个用户的朋友,多对多关系)
Message (用户可以向其他用户发送消息)
Group (用户可以在不同的组中)
Game (游戏可以与各种玩家一起玩,有一些信息,如游戏日期.这导致两个故事,游戏和游戏用户,后者存储用户和游戏之间的关系)
现在,我想制作一个日志,例如:
用户A(链接到用户)成为新朋友,用户B(链接到用户)
用户A(链接到用户),B(链接到用户)和C(链接到用户)玩游戏(链接到游戏)
用户C(链接到用户)加入了一个组D(链接到组)
所以,我想制作一个灵活的日志,可以存储我想要的多个引用和对不同实体(例如用户和游戏)的引用.
我知道有两种方法,但它们都有一个或多个问题:
记录动作时,我直接存储我想要的纯文本(即:只有1个char字段,用于存储'用户C加入组').但是,这样有一个问题,这个文本需要翻译成其他语言,我不能为每种语言都有一个字段.
有一个主表log,每行代表一个日志动作和一个代码,所以我知道哪个动作是,即:一个用户加入了一个组,x个用户玩了一个游戏.然后我会为每个需要的外键类型的另一个表,所以我有log_user,log_group和log_game例如,log_user与现场参考log和另一参考user.这样我可以让多个用户进行相同的日志操作.问题:相当复杂并且可能导致大量开销,因为我必须查询多个表的日志操作.这是正确的,它是否会过于密集?
所以,我愿意接受新的想法和头脑风暴.这种问题的最佳方法是什么?在此先感谢,我希望我已经明确地解释了它.如果有任何问题,请询问.
编辑:我决定开始赏金,因为我对收到的答案并不满意.如果需要,将做出任何澄清.谢谢
我想要一些非常类似于facebook/orkut /社交网络"朋友更新"的东西.这将显示给用户.
最近,我一直在考虑是否值得拥有一个可能有很多NULL列的表,或者如果有更多表没有NULL则更好.我听说过InnoDB上没有存储NULL,所以我想知道是否存在任何有很多NULL的行的缺点或问题.我一直听说常见的NULL很糟糕,但我从未真正了解过原因.顺便说一下,如果重要的话,外键上的那些将是NULL.
第二个疑问,当我在有很多NULL的列上使用INNER JOIN时是否有任何性能问题?就像,如果我有4个外键,并且我要做4个INNER JOIN,但很可能只有1个不是NULL,这是否会影响性能?谢谢
可能重复:
Django动态模型字段
早上好家伙!场景如下.对于Django上的一些模型,我想允许最终用户定义自己的字段.如果我可以保留所有Django这些令人敬畏的功能,如ORM,那将是很棒的,所以我仍然可以执行类似field__gte的调用来搜索模型,仍然根据字段类型进行字段验证等等.我已经考虑了两种方法这个,我不仅仅对新的建议持开放态度.任何反馈都将非常感激.
第一种方法是实体 - 属性 - 值(http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model),其中django已经有了一个应用程序.请参阅http://code.google.com/p/django-custom-field/ 我认为这是一个不错的解决方案,但我失去了"mymodel.objects.filter(custom_field_x = something)"的能力.也许有办法重新获得ORM,任何想法?但是我听说过很多关于这个方法的坏故事,我有点害怕使用它.
第二种方法是为每个用户建立一个数据库表(可能不超过1000个).我读过django在inspectdb中有一些东西,它实际上会检查哪些字段并为你生成模型.这可能是有用的,但我想也许我应该存储这个特定用户创建的字段,并以某种方式告诉django,嘿,我们在这个模型中也有这个字段.这可能吗?我知道为每个用户设置不同的表通常很糟糕,但考虑到这种情况,你们如何评价这种方法,为每个用户设置一个表是否可以?
需要自定义字段的模型例如是Person.他们可能想要一个自定义字段来存储地址,血型或任何其他东西.
提前谢谢了!周日愉快!
非常相似:如何在Django中创建用户定义的字段 - 但只讨论EAV,我想避免.我愿意接受新的想法!
Ruby有一个叫做单词数组的东西
fruits = %w(Apple Orange Melon)
Run Code Online (Sandbox Code Playgroud)
变
fruits = ["Apple", "Orange", "Melon"]
Run Code Online (Sandbox Code Playgroud)
无论如何我还可以使用Ruby的单词数组作为哈希?
fruits["Apple"]将返回0,1 fruits["Orange"]等等.或者我必须将其声明为哈希?
fruits_hash = {
'Apple' => 0,
'Orange' => 1,
'Melon' => 2,
}
Run Code Online (Sandbox Code Playgroud)
目标是能够将字段保存为整数,但要将其表示为Rails上的字符串.
我最终决定对我的应用程序进行一些测试,但是如果用户可以更改另一个用户,我会坚持测试(取决于用户的类型 - 我使用django-rules来进行逻辑权限检查,但这并不重要)
这是我到目前为止的代码
class RulesAndPermissionsTests(TestCase):
fixtures = ['auth_no_permissions.json', 'profiles.json', 'rules.json']
def setUp(self):
self.c = Client()
self.user = User.objects.get(username="estagiario")
self.non_staff = User.objects.get(username="fisica")
self.admin = User.objects.get(username="admin")
login = self.c.login(username='estagiario', password='estagiario')
def test_can_change_non_staff_users(self):
self.assertFalse(self.user.has_perm('logical_change_user', self.non_staff.profile)) # can't change non staff users without permission
# now add the permission and test it again
self.user.user_permissions.add(Permission.objects.get(codename='change_user'))
print self.user.get_all_permissions() # prints set([])
self.assertTrue(self.user.has_perm('logical_change_user', self.non_staff.profile))
Run Code Online (Sandbox Code Playgroud)
即使在添加权限后,我的用户仍然没有权限.这是因为我不允许在测试期间创建任何东西(这是一种不好的做法吗?)?或者django以某种方式缓存权限?如果我在setUp添加权限,它可以工作,但我想在同一个测试中更改它(使用和不使用权限进行测试).
提前致谢!