- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在尝试在传递给数据集映射方法的函数内部使用 Tensorflow 的 feature_column 映射时遇到了问题。当尝试使用 Dataset.map 将数据集的分类字符串特征作为输入管道的一部分进行热编码时,会发生这种情况。我收到的错误消息是: tensorflow.python.framework.errors_impl.FailedPreconditionError: Table already initialized.
以下代码是重现问题的基本示例:
nhập numpy dưới dạng np
import tensorflow as tf
from tensorflow.contrib.lookup import index_table_from_tensor
# generate tfrecords with two string categorical features and write to file
vlists = dict(season=['Spring', 'Summer', 'Fall', 'Winter'],
day=['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'])
writer = tf.python_io.TFRecordWriter('test.tfr')
for s,d in zip(np.random.choice(vlists['season'],50),
np.random.choice(vlists['day'],50)):
example = tf.train.Example(
features = tf.train.Features(
feature={
'season':tf.train.Feature(
bytes_list=tf.train.BytesList(value=[s.encode()])),
'day':tf.train.Feature(
bytes_list=tf.train.BytesList(value=[d.encode()]))
}
)
)
serialized = example.SerializeToString()
writer.write(serialized)
writer.close()
现在cwd中有一个名为test.tfr的tfrecord文件,有50条记录,每条记录由两个字符串特征组成,'season'和'day',下面将创建一个数据集,该数据集将解析 tfrecords 并创建大小为 4 的批处理
def parse_record(element):
feats = {
'season': tf.FixedLenFeature((), tf.string),
'day': tf.FixedLenFeature((), tf.string)
}
return tf.parse_example(element, feats)
fname = tf.placeholder(tf.string, [])
ds = tf.data.TFRecordDataset(fname)
ds = ds.batch(4).map(parse_record)
此时,如果您创建一个迭代器并在其上多次调用 get_next,它会按预期工作,并且每次运行您都会看到如下输出:
iterator = ds.make_initializable_iterator()
nxt = iterator.get_next()
sess.run(tf.tables_initializer())
sess.run(iterator.initializer, feed_dict={fname:'test.tfr'})
sess.run(nxt)
# output of run(nxt) would look like
# {'day': array([b'Sat', b'Thu', b'Fri', b'Thu'], dtype=object), 'season': array([b'Winter', b'Winter', b'Fall', b'Summer'], dtype=object)}
但是,如果我想使用 feature_columns 将这些分类热编码为使用 map 的数据集转换,那么它会运行一次并产生正确的输出,但在随后的每次调用 run(nxt) 时,它都会给出 Tables already initialized 错误,例如:
# using the same Dataset ds from above
season_enc = tf.feature_column.categorical_column_with_vocabulary_list(
key='season', vocabulary_list=vlists['season'])
season_col = tf.feature_column.indicator_column(season_enc)
day_enc = tf.feature_column.categorical_column_with_vocabulary_list(
key='day', vocabulary_list=vlists['day'])
day_col = tf.feature_column.indicator_column(day_enc)
cols = [season_col, day_col]
def _encode(element, feat_cols=cols):
return tf.feature_column.input_layer(element, feat_cols)
ds1 = ds.map(_encode)
iterator = ds1.make_initializable_iterator()
nxt = iterator.get_next()
sess.run(tf.tables_initializer())
sess.run(iterator.initializer, feed_dict={fname:'test.tfr'})
sess.run(nxt)
# first run will produce correct one hot encoded output
sess.run(nxt)
# second run will generate
W tensorflow/core/framework/op_kernel.cc:1192] Failed precondition: Table
already initialized.
2018-01-25 19:29:55.802358: W tensorflow/core/framework/op_kernel.cc:1192]
Failed precondition: Table already initialized.
2018-01-25 19:29:55.802612: W tensorflow/core/framework/op_kernel.cc:1192]
Failed precondition: Table already initialized.
tensorflow.python.framework.errors_impl.FailedPreconditionError: 表 已经初始化。
但是,如果我尝试像下面那样在没有 feature_columns 的情况下手动进行一次热编码,那么它仅在表是在 map 函数之前创建的情况下才有效,否则它会给出与上面相同的错误
# using same original Dataset ds
tables = dict(season=index_table_from_tensor(vlists['season']),
day=index_table_from_tensor(vlists['day']))
def to_dummy(element):
s = tables['season'].lookup(element['season'])
d = tables['day'].lookup(element['day'])
return (tf.one_hot(s, depth=len(vlists['season']), axis=-1),
tf.one_hot(d, depth=len(vlists['day']), axis=-1))
ds2 = ds.map(to_dummy)
iterator = ds2.make_initializable_iterator()
nxt = iterator.get_next()
sess.run(tf.tables_initializer())
sess.run(iterator.initializer, feed_dict={fname:'test.tfr'})
sess.run(nxt)
它似乎与 feature_columns 创建的索引查找表的范围或命名空间有关,但我不确定如何弄清楚这里发生了什么,我试过更改 feature_column 的位置和时间对象已定义,但没有任何区别。
câu trả lời hay nhất
我刚通过another recent question来到这里并想提出一个潜在的解决方案。由于这个问题已经很晚了,我不确定这里的问题是否已经解决。如果已经有好的解决方案请指正。
我真的不知道这个错误是怎么发生的。但是学习canned estimator ,我意识到可能有另一种方法来完成这项工作,即在解析示例之前迭代数据集。这种方法的一个好处是将特征列映射从映射函数分离到数据集。这可能与此处的未知错误原因有关 it is known that :
when using hash_table in "tensorflow.python.ops.gen_lookup_ops" in tf.data.Dataset.map function because tf.data.Dataset.map do not use the default graph, the hash_table can not be initialized.
我不确定这是否符合您真正想要的,但是在您的代码中使用“test.tfr”生成的潜在示例可能是:
import tensorflow as tf
# using the same Dataset ds from above
vlists = dict(season=['Spring', 'Summer', 'Fall', 'Winter'],
day=['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'])
season_enc = tf.feature_column.categorical_column_with_vocabulary_list(
key='season', vocabulary_list=vlists['season'])
season_col = tf.feature_column.indicator_column(season_enc)
day_enc = tf.feature_column.categorical_column_with_vocabulary_list(
key='day', vocabulary_list=vlists['day'])
day_col = tf.feature_column.indicator_column(day_enc)
cols = [season_col, day_col]
def _encode(element, feat_cols=cols):
element = tf.parse_example(element, features=tf.feature_column.make_parse_example_spec(feat_cols))
return tf.feature_column.input_layer(element, feat_cols)
fname = tf.placeholder(tf.string, [])
ds = tf.data.TFRecordDataset(fname)
ds = ds.batch(4)
ds1 = ds#.map(_encode)
iterator = ds1.make_initializable_iterator()
nxt = iterator.get_next()
nxt = _encode(nxt)
với tf.Session() là sess:
sess.run(tf.tables_initializer())
sess.run(iterator.initializer, feed_dict={fname:'test.tfr'})
print(sess.run(nxt))
# first run will produce correct one hot encoded output
print(sess.run(nxt))
关于python - 数据集映射表中的 Tensorflow 特征列已初始化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48450785/
Tôi đang sử dụng hadoop trên csv để phân tích một số dữ liệu. Tôi đang sử dụng sql/mysql (không chắc chắn) để phân tích dữ liệu và hiện tôi đang gặp khó khăn. Tôi đã dành hàng giờ tìm kiếm trên Google và không thể tìm thấy bất cứ điều gì liên quan. Tôi cần một truy vấn trong đó
Tôi đang gặp khó khăn với nhiệm vụ "đơn giản" là bố cục lưới Bootstrap. Tôi muốn có 4 cột trên khung nhìn lớn, sau đó là 2 cột trên thiết bị trung bình và cuối cùng chỉ có 1 cột trên thiết bị nhỏ hơn. Khi tôi kiểm tra đoạn mã của mình, có vẻ như
Tôi xin lỗi vì tiêu đề khó hiểu, tôi không thể nghĩ ra từ ngữ chính xác cho câu hỏi này. Thay vào đó, tôi sẽ chỉ cung cấp cho bạn thông tin cơ bản và mục tiêu: Đây là một bảng, một người có thể có hoặc không có nhiều hàng dữ liệu và các hàng có thể chứa cùng một giá trị active_id hoặc
Bảng cơ sở dữ liệu có 3 cột - A int , B int , C int Câu hỏi của tôi là: Cách tìm A > B + C bằng cách sử dụng Sequelize result const countTasks = chờ Ta
Tôi gặp vấn đề khi viết truy vấn này với chức năng sau: Đầu tiên sắp xếp theo cột 2 DESC rồi chọn từ "Cột riêng biệt 1" Chỉ cột1 là DISTINCT Truy vấn này không hữu ích vì trước tiên nó thực hiện từ cột 1
Sử dụng Bootstrap thực sự rất thú vị và hữu ích, hiện tại tôi đang gặp khó khăn khi tạo yêu cầu sau. "Sử dụng bootstrap để có 4 cột trên desktop, 2 cột trên máy tính bảng và 1 cột trên thiết bị di động" Ai có thể cho mình biết cấu trúc đúng nhất được không
Tôi mới làm quen với R và đang hỏi một câu hỏi rất cơ bản. Tất nhiên, tôi đã làm bài tập về nhà trong khi cố gắng nhận hướng dẫn từ các ví dụ được cung cấp ở đây và ở đây, nhưng không thể thực hiện ý tưởng trong trường hợp của mình, có thể do kích thước so sánh lớn hơn trong câu hỏi của tôi. Thực tế của tôi
Thông thường tôi sẽ sử dụng R và thực hiện merge.by, nhưng tệp này có vẻ quá lớn để bất kỳ máy tính nào trong bộ phận có thể xử lý nó! (Thông tin bổ sung cho bất kỳ ai làm việc trong lĩnh vực di truyền học) Về cơ bản, việc quy định dường như sẽ bị xóa Sau khi nhận được số rs của ID snp, tôi chỉ có
Tôi có một df, delta1 delta2 0 -1 2 0 -1 0 0 0 Tôi muốn biết cách gán delt
Xin chào, tôi muốn biết liệu có thể thực hiện những việc sau không. Rõ ràng là tôi đã thử chạy nó trong phpMyAdmin và tôi gặp lỗi. Có lẽ có một cách khác để viết truy vấn này. CHỌN * TỪ eat_eat_restaurants
Tôi có 2 danh sách (tiêu đề và giá trị dữ liệu). Tôi muốn khớp và thay thế cột giá trị dữ liệu 1 bằng cột tiêu đề 1 để nhận giá trị khớp với cột giá trị dữ liệu 1 và cột giá trị tiêu đề 2 tệp tiêu đề TotalLoad,M0001001 Hois
Tôi có hai tệp có độ dài khác nhau, tệp2 là tệp tham chiếu lớn mà từ đó tôi trích xuất dữ liệu của tệp1. Tôi có một dòng awk mà tôi thường điều chỉnh để tìm và thay thế trong các tệp của mình, nhưng nó luôn tìm và thay thế trong cùng một cột. Vì vậy đối với
Giả sử tôi có hai bảng như hình dưới đây. tạo hợp đồng bảng (số c_ID(1) khóa chính, c_name varchar2(50) không
Tôi có một bảng H2 với một cột varchar và ràng buộc kiểm tra của nó được xác định như sau: CONSTRAINT my_constraint CHECK (varchar_field <> '') Câu lệnh chèn sau không thành công, nhưng khi tôi xóa
Đây là số lượng mã tối thiểu minh họa rõ ràng vấn đề của tôi: Một Hai Ba 2 div đầu tiên phải là 2 cột bên trái. Cái thứ ba sẽ chiếm phần còn lại của trang. Cuối cùng, tôi sẽ thêm các tùy chọn để ẩn và
Trong Phân tích nhật ký trong Azure, tôi chọn một truy vấn được xác định trước cho VM Heartbeat và tôi chạy truy vấn đó trong trình chỉnh sửa nhưng khi tôi tạo cảnh báo, tôi vẫn nhận được cảnh báo "Truy vấn không trả về TimeGenera
Trong Phân tích nhật ký trong Azure, tôi chọn một truy vấn được xác định trước cho VM Heartbeat và tôi chạy truy vấn đó trong trình chỉnh sửa nhưng khi tôi tạo cảnh báo, tôi vẫn nhận được cảnh báo "Truy vấn không trả về TimeGenera
Hôm nay tôi bắt đầu sử dụng JexcelApi và nhận thấy điều này: Khi bạn cố gắng lấy một phần tử từ một vị trí cụ thể, thay vì sử dụng sheet.getCell(row,col) như bạn thường mong đợi, bạn sử dụng sheet.getCell(col,ro
Tôi có cơ sở dữ liệu với 28 cột. Cột đầu tiên là mã, cột thứ hai là tên và phần còn lại là giá trị. public void displayData() { con.Open(); MySqlDataAdapter
Tôi bực bội: mỗi lần tôi thu nhỏ trang này lại, mọi thứ trở nên lộn xộn. Làm cách nào để căn giữa trang web để tôi có thể thu nhỏ và các thành phần không được định vị sai. (Đáng lẽ phải có 2 cột nhưng mọi thứ lại được hợp nhất thành 1) Tôi đã thử nhưng không hiểu sao nó không hoạt động. www.o
Tôi là một lập trình viên xuất sắc, rất giỏi!