小编GRS*_*GRS的帖子

Django Rest Framework,使用GET请求传递参数,基于分类的视图

我希望用户向我的Django REST API发送GET请求:

127.0.0.1:8000/model/?radius=5&longitude=50&latitude=55.1214
Run Code Online (Sandbox Code Playgroud)

使用他的经度/纬度和半径,传入参数,并使用GeoDjango获取查询集.

例如,目前我有:

class ModelViewSet(viewsets.ModelViewSet):
    queryset = Model.objects.all()
Run Code Online (Sandbox Code Playgroud)

而我理想的是:

class ModelViewSet(viewsets.ModelViewSet):
     radius = request.data['radius']
     location = Point(request.data['longitude'],request.data['latitude']
     # filter results by distance using geodjango
     queryset = Model.objects.filer(location__distance_lte=(location, D(m=distance))).distance(location).order_by('distance')
Run Code Online (Sandbox Code Playgroud)

现在有几个立即错误:

1)request未定义 - 我应该使用api_view,即基于函数的视图吗?

2)DRF页面说request.data仅用于POST,PUT和PATCH方法.如何使用GET发送参数?

django django-rest-framework

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

Facebook评论不会在评论审核工具中显示(但在实际页面上显示)

10月26日之后似乎没有评论出现在我的评论审核工具中.但是,评论会显示在页面上.

在网页上,我可以看到之后的评论(其中一些是我需要调节的垃圾邮件).

我在页面上有以下代码:

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = 'https://connect.facebook.net/en_GB/sdk.js#xfbml=1&version=v2.10&appId=xxxxx';
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<div class="fb-comments" data-href="xxxxx.com" data-numposts="7" data-order-by="reverse_time"></div>
Run Code Online (Sandbox Code Playgroud)

fb:admins和fb:app_id属性都已设置并显示在Open Graph Debugger中(我实际上删除了fb:admins属性,因为管理员已在审核工具中设置)

facebook facebook-javascript-sdk facebook-social-plugins facebook-comments

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

Tensorflow与Keras中的RNN,tf.nn.dynamic_rnn()的折旧

我的问题是:文档中所述tf.nn.dynamic_rnnkeras.layers.RNN(cell)真的相同吗?

我正在计划构建RNN,但是似乎tf.nn.dynamic_rnn偏向于Keras。

它特别指出:

警告:不建议使用此功能。它将在将来的版本中删除。更新说明:请使用keras.layers.RNN(cell),它等效于此API

但是在可变长度的情况下,我看不出API的等效性!

在原始TF中,我们可以指定shape的张量(batch_size, seq_lengths)。这样,如果我们的序列为,[0, 1, 2, 3, 4]并且批次中最长的序列的大小为10,则可以将其填充为0,然后[0, 1, 2, 3, 4, 0, 0, 0, 0, 0]可以说seq_length=5要处理[0, 1, 2, 3, 4]

但是,在Keras中,它不是这样工作的!我们能做的是mask_zero=True在先前的层中指定,例如嵌入层。这也将掩盖第一个零!

我可以通过将它们添加到整个向量中来解决它,但是那是我在使用处理后需要做的额外预处理,tft.compute_vocabulary()它将词汇表单词映射到0索引向量。

keras tensorflow tf.keras

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

Django REST:上传和序列化多个图像

我有2个模型Task,TaskImage它们是属于Task对象的图像集合.

我想要的是能够向我的Task对象添加多个图像,但我只能使用2个模型.目前,当我添加图片时,它不允许我上传它们并保存新对象.

settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)

serializers.py

class TaskImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = TaskImage
        fields = ('image',)


class TaskSerializer(serializers.HyperlinkedModelSerializer):
    user = serializers.ReadOnlyField(source='user.username')
    images = TaskImageSerializer(source='image_set', many=True, read_only=True)

    class Meta:
        model = Task
        fields = '__all__'

    def create(self, validated_data):
        images_data = validated_data.pop('images')
        task = Task.objects.create(**validated_data)
        for image_data in images_data:
            TaskImage.objects.create(task=task, **image_data)
        return task
Run Code Online (Sandbox Code Playgroud)

models.py

class Task(models.Model):
    title = models.CharField(max_length=100, blank=False)
    user = models.ForeignKey(User)

    def save(self, *args, **kwargs):
        super(Task, self).save(*args, …
Run Code Online (Sandbox Code Playgroud)

python django serialization django-rest-framework

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

有没有办法加快以下pandas的循环?

我的data框架包含10,000,000行!分组后,仍然有大约9,000,000个子帧循环.

代码是:

data = read.csv('big.csv')
for id, new_df in data.groupby(level=0): # look at mini df and do some analysis
    # some code for each of the small data frames
Run Code Online (Sandbox Code Playgroud)

这是非常低效的,现在代码运行了10多个小时.

有没有办法加快速度?

完整代码:

d = pd.DataFrame() # new df to populate
print 'Start of the loop'
for id, new_df in data.groupby(level=0):
    c = [new_df.iloc[i:] for i in range(len(new_df.index))]
    x = pd.concat(c, keys=new_df.index).reset_index(level=(2,3), drop=True).reset_index()
    x = x.set_index(['level_0','level_1', x.groupby(['level_0','level_1']).cumcount()])
    d = pd.concat([d, x])
Run Code Online (Sandbox Code Playgroud)

要获取数据:

data = pd.read_csv('https://raw.githubusercontent.com/skiler07/data/master/so_data.csv', index_col=0).set_index(['id','date'])
Run Code Online (Sandbox Code Playgroud)

注意:

大多数id只有1个日期.这表明只有1次访问.对于具有更多访问量的id,我想以3d格式构建它们,例如将所有访问存储在第二维度中.输出为(id,visit,features)

python numpy pandas

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

Google App Engine:在部署期间构建超时

编辑: Google Cloud是最好的.绝对没有变化,但今天早上部署得很好.

部署~10米后出错(10次以上部署尝试).

我已经更改了应用程序以添加一个只有少于10行代码的简单函数.它对库没有影响,只使用本机python,因此我不确定它如何影响部署.

我测试了应用程序,它在本地运行良好.

这是我得到的错误:

错误:(gcloud.app.deploy)云构建失败.通过https://console.cloud.google.com/xxxxxxxx/检查日志. 失败状态:未知:错误响应:[4] DEADLINE_EXCEEDED

在此之前,日志不会显示任何错误,事实上一切都按预期进行.

最新条目首先:

9302e2430a0e: Pushed 
4f56eb74b6bf: Pushed 
21df82f90a72: Layer already exists 
f0e2b3558b28: Layer already exists 
99c71ba2c817: Layer already exists 
2483da9621d1: Layer already exists 
af09d2110abe: Layer already exists 
d968669f4b42: Pushed 
4b1e707066a6: Layer already exists 
55530b72c8c8: Layer already exists 
62c169a7d462: Layer already exists
Run Code Online (Sandbox Code Playgroud)

google-app-engine google-cloud-platform

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

加速TFRecords在CloudML for GPU上加入Keras模型

我想以超快的速度将TFRecords输入我的模型.但是,目前,我的GPU(GCP上的单K80)负载为0%,这在CloudML上速度非常慢.

我在GCS中有TFRecords train_directory = gs://bucket/train/*.tfrecord:(大约100个文件,大小为30mb-800mb),但由于某种原因,它很难将数据快速地输入到我的模型中以便GPU.

有趣的是,将数据加载到内存中并使用numpy数组使用fit_generator()速度提高了7倍.在那里,我可以指定多处理和多工人.

我当前的设置解析tf记录并加载无限tf.Dataset.理想情况下,解决方案可以在内存中保存/完善一些批次,以便按需使用gpu.

def _parse_func(record):
    """ Parses TF Record"""
    keys_to_features = {}
    for _ in feature_list: # 300 features ['height', 'weights', 'salary']
         keys_to_features[_] = tf.FixedLenFeature([TIME_STEPS], tf.float32)
    parsed = tf.parse_single_example(record, keys_to_features)
    t = [tf.manip.reshape(parsed[_], [-1, 1]) for _ in feature_list]
    numeric_tensor = tf.concat(values=t, axis=1)

    x = dict()
    x['numeric'] = numeric_tensor
    y = ...
    w = ...

    return x, y, w

def input_fn(file_pattern, b=BATCH_SIZE):
    """
    :param file_pattern: GCS bucket to read …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow google-cloud-ml

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

如何合并数值和嵌入顺序模型以处理RNN中的类别

我想为我的分类特征构建一个带有嵌入的LSTM模型。我目前具有数值特征和一些分类特征,例如位置,pd.get_dummies()由于计算复杂性,因此无法进行一次热编码,这是我本来打算这样做的。

我们来看一个例子:

样本数据

data = {
    'user_id': [1,1,1,1,2,2,3],
    'time_on_page': [10,20,30,20,15,10,40],
    'location': ['London','New York', 'London', 'New York', 'Hong Kong', 'Tokyo', 'Madrid'],
    'page_id': [5,4,2,1,6,8,2]
}
d = pd.DataFrame(data=data)
print(d)
   user_id  time_on_page   location  page_id
0        1            10     London        5
1        1            20   New York        4
2        1            30     London        2
3        1            20   New York        1
4        2            15  Hong Kong        6
5        2            10      Tokyo        8
6        3            40     Madrid        2
Run Code Online (Sandbox Code Playgroud)

让我们看看访问网站的人。我正在跟踪诸如页面停留时间等数字数据。分类数据包括:位置(超过1000个唯一性),Page_id(大于1000个唯一性),Author_id(超过100个唯一性)。最简单的解决方案是对所有内容进行一次热编码,然后将其放入具有可变序列长度的LSTM中,每个时间步对应于不同的页面视图。

上面的DataFrame将生成7个训练样本,其序列长度可变。例如,user_id=2我将有2个训练样本:

[ ROW_INDEX_4 ] and [ …
Run Code Online (Sandbox Code Playgroud)

python machine-learning lstm keras tensorflow

5
推荐指数
1
解决办法
1301
查看次数

在投放时在Keras模型中包括BEAM预处理图

简短问题:

由于Tensorflow朝着Keras方向发展远离Estimators,我们如何将我们的预处理管道(例如,使用tf.Transformbuild_serving_input_fn()(用于估算器)纳入我们的tf.keras模型中?


据我了解,合并此预处理图形的唯一方法是首先使用Keras构建模型。训练吧。然后使用将其导出为估算器tf.keras.estimator.model_to_estimator。然后创建一个serving_input_fn并将估算器导出为已保存的模型,并serving_input_fn在服务时将其一起使用。

对我来说,这似乎很乏味,而不是正确的做事方式。相反,我想直接从Keras转到Saved Model。


问题

我希望能够在Keras保存的模型中包含APAHCE BEAM预处理图形。

我想提供训练有素的Keras模型,因此我使用SavedModel导出了它。给定一个训练有素的模型,我想应用以下逻辑来预测结果。

raw_features = { 'feature_col_name': [100] } # features to transform
working_dir = 'gs://path_to_transform_fn' 

# transform features
transformed_features = tf_transform_output.transform_raw_features(raw_features)

model = load_model('model.h5')
model.predict(x=transformed_features)
Run Code Online (Sandbox Code Playgroud)

定义模型时,我使用Functional API,并且模型具有以下输入:

for i in numerical_features:
    num_inputs.append(tf.keras.layers.Input(shape=(1,), name=i))
Run Code Online (Sandbox Code Playgroud)

这是问题所在,因为张量不是直接从tf.Dataset输入到keras中,而是使用该Input()层链接。

使用导出模型时tf.contrib.saved_model.save_keras_model(model=model, saved_model_path=saved_model_path),如果我在单独的脚本中进行预处理,则可以很容易地提供预测。这样的输出看起来像 在此处输入图片说明

这是一般情况吗?例如,我将这些功能作为某些外部脚本的一部分进行预处理,然后发送transformed_features到模型进行预测。

理想情况下,它们都将在Keras模型/单个图形的一部分内发生。目前看来,我正在使用一个图的输出作为另一图的输入。相反,我希望能够使用单个图形。

如果使用估算器,我们可以构建一个serving_input_fn(),可以将其作为估算器的参数包括在内,这使我们可以将预处理逻辑合并到图形中。

我也想听听您关于使用Cloud ML服务模型的Keras + SavedModel +预处理想法

keras tensorflow apache-beam google-cloud-ml

5
推荐指数
1
解决办法
169
查看次数

在Keras中反转VGG的图像预处理以返回原始图像

我正在使用 keras 应用程序中的 VGG19 模型。我原以为图像会被缩放,[-1, 1]但相反,它似乎preprocess_input正在做其他事情。

为了预处理输入,我使用以下两行首先加载图像,然后缩放它:

from keras.preprocessing import image
from keras.applications.vgg19 import preprocess_input

img = image.load_img("./img.jpg", target_size=(256, 256))
img = preprocess_input(np.array(img))

print(img)
>>> array([[[151.061  , 138.22101, 131.32   ],
    ... ]]]
Run Code Online (Sandbox Code Playgroud)

输出似乎在 [0,255] 区间内,但是,原始 255 被映射到 151 左右的值(可能居中)。VGG实际需要的输入是什么?通过查看源代码(对于 ),我认为它应该在 [-1,1] 中mode='tf'。它是否非常灵活,我可以使用我想要的任何类型的缩放?(我使用 VGG 来提取中级特征 - Conv4 块)。

当查看源代码时,preprocess_input我看到:

...
    if mode == 'tf':
        x /= 127.5
        x -= 1.
        return x
...
Run Code Online (Sandbox Code Playgroud)

这表明对于张量流后端(keras 使用的),它应该缩放到 [-1,1]。

我需要做的是创建一个函数restore_original_image_from_array(),它将获取img并重建我输入的原始图像。问题是我不确定 VGG19 的缩放是如何发生的。 …

python keras tensorflow

5
推荐指数
1
解决办法
4252
查看次数