- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Tensorflow Estimator 非常陌生。我想知道是否可以将一组分类变量作为特征传递给估计器,并自动将其转换为一组嵌入。例如,以下是 CSV 文件中的一条记录。它包含 2 个分类变量列表(用方括号括起来)“country”和“watch”,2 个分类变量“day_of_week”和“day_period”以及一个目标,在本例中为“movie_id”。
day_of_week,day_period,country,movie_id,watched
SUNDAY,EVENING,[USA,UK],B2JO1owWbeLn,[WGdZ5qZmLw0,abcdef]
MONDAY,EVENING,[China],xxx,[abc,def,ijk]
根据文档https://www.tensorflow.org/api_docs/python/tf/feature_column 、“day_of_week”和“day_period”可以表示为“categorical_column_with_vocabulary_list”。这很简单。然而,“国家”和“观看的”是分类变量的列表。我想将列表中的每个分类变量合并到嵌入中。在同一个文档中,“tf.feature_column.embedding_column”就可以解决问题。
以下函数构建表示上述输入的列。
def build_model_columns():
day_of_week = tf.feature_column.categorical_column_with_vocabulary_list('day_of_week', day_of_weeks)
day_period = tf.feature_column.categorical_column_with_vocabulary_list('day_period', day_periods)
country = tf.feature_column.categorical_column_with_vocabulary_list('country', countries)
watched = tf.feature_column.categorical_column_with_vocabulary_list('watched', movie_emb_ids)
columns = [
tf.feature_column.indicator_column(day_of_week),
tf.feature_column.indicator_column(day_period),
tf.feature_column.embedding_column(country, 8),
tf.feature_column.embedding_column(watched, 32)
]
return columns
以下是生成训练数据集的函数
def tensor_to_array(tensor):
length = tf.size(tf.string_split([tensor], ""))
sub = tf.substr(tensor, 1, length-2) # remove the leading '[' and trailing ']'
splits = tf.string_split([sub], delimiter=',')
return splits
def train_input_fn():
train_files = "train.csv"
target_files = "target.csv"
target_table, target_ids = read_table_lookup(target_files, "movie")
def preprocess(day_of_week, day_period, country, movie_id, watched):
features = {
'day_of_week': day_of_week,
'day_period': day_period,
'country': tensor_to_array(country),
'watched': tensor_to_array(watched)
}
# target_table is a lookup table converting "movie_id" to integer "id"
return features, target_table.lookup(movie_id)
dataset = (tf.contrib.data.CsvDataset(train_files, record_defaults, header=True)
.map(preprocess, num_parallel_calls=5)
.batch(batch_size=batch_size, drop_remainder=False)
.repeat()
)
# iterator = dataset.make_initializable_iterator()
# tf.add_to_collection(tf.GraphKeys.TABLE_INITIALIZERS, iterator.initializer)
return dataset
以下是用于创建和训练估计器的代码片段。
hidden_units = [512, 512]
record_defaults = [[""]] * 5
columns = build_model_columns()
estimator = tf.estimator.DNNClassifier(model_dir="dir",
feature_columns=columns,
hidden_units=hidden_units,
n_classes=len(target_ids)) # length of all targets
estimator.train(input_fn=train_input_fn)
我没有收到任何错误,似乎一切都应该按预期工作,但训练损失是如此之大,并且在 3,xxx 左右波动,并且永远不会减少。见下文
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Saving checkpoints for 0 into /home/cocoza4/movie_models/deep/model.ckpt.
INFO:tensorflow:loss = 6538.0645, step = 0
INFO:tensorflow:global_step/sec: 17.353
INFO:tensorflow:loss = 3596.562, step = 100 (5.764 sec)
INFO:tensorflow:global_step/sec: 17.434
INFO:tensorflow:loss = 3504.936, step = 200 (5.736 sec)
INFO:tensorflow:global_step/sec: 17.4234
INFO:tensorflow:loss = 3500.0488, step = 300 (5.739 sec)
INFO:tensorflow:global_step/sec: 17.5321
INFO:tensorflow:loss = 3480.702, step = 400 (5.705 sec)
INFO:tensorflow:global_step/sec: 17.4534
INFO:tensorflow:loss = 3517.599, step = 500 (5.729 sec)
INFO:tensorflow:global_step/sec: 17.3421
INFO:tensorflow:loss = 3446.142, step = 600 (5.769 sec)
INFO:tensorflow:global_step/sec: 17.313
INFO:tensorflow:loss = 3281.3088, step = 700 (5.776 sec)
INFO:tensorflow:global_step/sec: 17.4421
INFO:tensorflow:loss = 3326.7336, step = 800 (5.731 sec)
INFO:tensorflow:global_step/sec: 17.3619
INFO:tensorflow:loss = 3464.902, step = 900 (5.762 sec)
INFO:tensorflow:global_step/sec: 17.2013
INFO:tensorflow:loss = 3364.2153, step = 1000 (5.813 sec)
INFO:tensorflow:global_step/sec: 17.4429
INFO:tensorflow:loss = 3410.449, step = 1100 (5.734 sec)
INFO:tensorflow:global_step/sec: 17.0483
INFO:tensorflow:loss = 3351.018, step = 1200 (5.866 sec)
INFO:tensorflow:global_step/sec: 17.4214
INFO:tensorflow:loss = 3386.995, step = 1300 (5.740 sec)
INFO:tensorflow:global_step/sec: 17.7965
INFO:tensorflow:loss = 3263.6074, step = 1400 (5.617 sec)
INFO:tensorflow:global_step/sec: 17.6944
INFO:tensorflow:loss = 3321.574, step = 1500 (5.652 sec)
INFO:tensorflow:global_step/sec: 17.3603
INFO:tensorflow:loss = 3234.7761, step = 1600 (5.760 sec)
我想知道我在准备训练数据时是否做错了什么?
谢谢
皮拉纳特·F.
最佳答案
引起我注意的第一件事是隐藏单元的数量。我会尝试调整你的隐藏单位。通常图层的大小应该减小,所以我会尝试 [512,256,128]
关于python - Tensorflow Estimator : loss not decreasing when using tf. feature_column.embedding_column 用于分类变量列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52591291/
我在优化 JOIN 以使用复合索引时遇到问题。我的查询是: SELECT p1.id, p1.category_id, p1.tag_id, i.rating FROM products p1
我有一个简单的 SQL 查询,我正在尝试对其进行优化以删除“使用位置;使用临时;使用文件排序”。 这是表格: CREATE TABLE `special_offers` ( `so_id` int
我有一个具有以下结构的应用程序表 app_id VARCHAR(32) NOT NULL, dormant VARCHAR(6) NOT NULL, user_id INT(10) NOT NULL
此查询的正确索引是什么。 我尝试为此查询提供不同的索引组合,但它仍在使用临时文件、文件排序等。 总表数据 - 7,60,346 产品= '连衣裙' - 总行数 = 122 554 CREATE TAB
为什么额外的是“使用where;使用索引”而不是“使用索引”。 CREATE TABLE `pre_count` ( `count_id`
我有一个包含大量记录的数据库,当我使用以下 SQL 加载页面时,速度非常慢。 SELECT goal.title, max(updates.date_updated) as update_sort F
我想知道 Using index condition 和 Using where 之间的区别;使用索引。我认为这两种方法都使用索引来获取第一个结果记录集,并使用 WHERE 条件进行过滤。 Q1。有什
I am using TypeScript 5.2 version, I have following setup:我使用的是TypeScript 5.2版本,我有以下设置: { "
I am using TypeScript 5.2 version, I have following setup:我使用的是TypeScript 5.2版本,我有以下设置: { "
I am using TypeScript 5.2 version, I have following setup:我使用的是TypeScript 5.2版本,我有以下设置: { "
mysql Ver 14.14 Distrib 5.1.58,用于使用 readline 5.1 的 redhat-linux-gnu (x86_64) 我正在接手一个旧项目。我被要求加快速度。我通过
在过去 10 多年左右的时间里,我一直打开数据库 (mysql) 的连接并保持打开状态,直到应用程序关闭。所有查询都在连接上执行。 现在,当我在 Servicestack 网页上看到示例时,我总是看到
我使用 MySQL 为我的站点构建了一个自定义论坛。列表页面本质上是一个包含以下列的表格:主题、上次更新和# Replies。 数据库表有以下列: id name body date topic_id
在mysql中解释的额外字段中你可以得到: 使用索引 使用where;使用索引 两者有什么区别? 为了更好地解释我的问题,我将使用下表: CREATE TABLE `test` ( `id` bi
我经常看到人们在其Haxe代码中使用关键字using。它似乎在import语句之后。 例如,我发现这是一个代码片段: import haxe.macro.Context; import haxe.ma
这个问题在这里已经有了答案: "reduce" or "apply" using logical functions in Clojure (2 个答案) 关闭 8 年前。 “and”似乎是一个宏,
这个问题在这里已经有了答案: "reduce" or "apply" using logical functions in Clojure (2 个答案) 关闭 8 年前。 “and”似乎是一个宏,
我正在考虑在我的应用程序中使用注册表模式来存储指向某些应用程序窗口和 Pane 的弱指针。应用程序的一般结构如下所示。 该应用程序有一个 MainFrame 顶层窗口,其中有几个子 Pane 。可以有
奇怪的是:。似乎a是b或多或少被定义为id(A)==id(B)。用这种方式制造错误很容易:。有些名字出人意料地出现在Else块中。解决方法很简单,我们应该使用ext==‘.mp3’,但是如果ext表面
我遇到了一个我似乎无法解决的 MySQL 问题。为了能够快速执行用于报告目的的 GROUP BY 查询,我已经将几个表非规范化为以下内容(该表由其他表上的触发器维护,我已经同意了与此): DROP T
我是一名优秀的程序员,十分优秀!