我希望用户向我的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发送参数?
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
我的问题是:文档中所述tf.nn.dynamic_rnn和keras.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索引向量。
我有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) 我的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)
编辑: 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) 我想以超快的速度将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) 我想为我的分类特征构建一个带有嵌入的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) 简短问题:
由于Tensorflow朝着Keras方向发展而远离Estimators,我们如何将我们的预处理管道(例如,使用tf.Transform和build_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 应用程序中的 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 的缩放是如何发生的。 …
keras ×5
python ×5
tensorflow ×5
django ×2
apache-beam ×1
facebook ×1
lstm ×1
numpy ×1
pandas ×1
tf.keras ×1