小编aud*_*son的帖子

对于无限数据集,每个时期使用的数据是否相同?

在张量流中,假设我有一个来自生成器的数据集:

dataset = tf.data.Dataset.from_generator(gen...)
Run Code Online (Sandbox Code Playgroud)

这个生成器生成无限的非重复数据(就像无限的非循环小数)。

model.fit(dataset, steps_per_epoch=10000, epochs=5)
Run Code Online (Sandbox Code Playgroud)

现在在这 5 个训练周期内,使用的数据是否相同?即总是来自生成器的前 10000 个项目?而不是 epoch 1 的 0-9999、epoch 2 的 10000-19999 等。

参数呢initial_epoch?如果我设置为1,模型会从第10000项开始训练吗?

model.fit(dataset, steps_per_epoch=10000, epochs=5, initial_epoch=1)
Run Code Online (Sandbox Code Playgroud)

更新: 这个简单的测试表明每次model.fit()调用时数据集都会重置

def gen():
    i = 1
    while True:
        yield np.array([[i]]), np.array([[0]])
        i += 1

ds = tf.data.Dataset.from_generator(gen, output_types=(tf.int32, tf.int32)).batch(3)

x = Input(shape=(1, 1))
model = Model(inputs=x, outputs=x)

model.compile('adam', loss=lambda true, pred: tf.reduce_mean(pred))
for i in range(10):
    model.fit(ds, steps_per_epoch=5, epochs=1)
Run Code Online (Sandbox Code Playgroud)

输出:

1/5 [=====>........................] - ETA: 0s - loss: …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

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

arrow::py::import_pyarrow() 导致分段错误

我正在尝试使用 arrow-cpp 构建一个表,然后将其传输回 python。

为了做到这一点,我需要事先调用 arrow::py::import_pyarrow() ,但这会导致 SEGFAULT。

谁能帮我找出我哪里做错了?

这是一个最小的例子

CMakeLists.txt

cmake_minimum_required(VERSION 3.20.0)
project(TEST)
set(CMAKE_CXX_STANDARD 17)
set(Python3_EXECUTABLE "/home/auderson/miniconda3/bin/python3.8")

list(APPEND CMAKE_PREFIX_PATH "/home/auderson/miniconda3/lib/cmake/arrow")
find_package(Arrow REQUIRED)
find_package(ArrowPython REQUIRED)
find_package(Python3 COMPONENTS Interpreter Development)


include_directories(.
        /home/auderson/miniconda3/lib/python3.8/site-packages/pyarrow/include
        ${Python3_INCLUDE_DIRS})

add_executable(TEST
        mini_t.cpp
        )

target_link_libraries(${PROJECT_NAME} PRIVATE arrow_shared)
target_link_libraries(${PROJECT_NAME} PRIVATE arrow_python_shared)
target_link_libraries(${PROJECT_NAME} PRIVATE ${Python3_LIBRARIES})

Run Code Online (Sandbox Code Playgroud)

.cpp文件


#include "arrow/python/pyarrow.h"

int main() {
    return arrow::py::import_pyarrow();
}


Run Code Online (Sandbox Code Playgroud)

输出(调试模式)

Signal: SIGSEGV (Segmentation fault)

Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

如果不在调试模式:

Process finished with exit code 139
Run Code Online (Sandbox Code Playgroud)

箭头的其他功能工作得很好。

c++ python-3.x apache-arrow pyarrow

0
推荐指数
1
解决办法
1021
查看次数

标签 统计

apache-arrow ×1

c++ ×1

pyarrow ×1

python ×1

python-3.x ×1

tensorflow ×1