Юлия использует пакет, расположенный в .julia / dev - PullRequest
2 голосов
/ 17 июня 2020

Я новичок в Юлии, хотя у меня есть опыт работы с Python и некоторыми другими языками. Я понимаю, что это, вероятно, очень простая проблема для новичков, но я не понимаю, как она должна работать в Julia.

Я хочу создать модуль Julia. Я видел рекомендации создать его с помощью PkgTemplates, так что именно это я и сделал. Моя структура каталогов такова:

enter image description here

Он расположен по пути по умолчанию, предложенному PkgTemplates: /home/username/.julia/dev/Keras2Flux.

Я хочу разработать его с помощью пакета Revise из-за медленного запуска Julia REPL. Однако мне не удается импортировать свой модуль в Julia REPL в терминале.

Итак, я cd в каталог, упомянутый выше, используйте команду julia и попробуйте using Keras2Flux. Я получаю сообщение об ошибке:

ERROR: ArgumentError: Package Keras2Flux not found in current path:

Я пробовал как using Keras2Flux, так и using Keras2Flux.jl, а также пытался вызвать его с одного уровня выше в моей структуре каталогов (т.е. /home/username/.julia/dev). У всех одна и та же проблема.

Что не так (что более важно, почему?) И как это исправить?

Текущее содержимое модуля (не совсем актуально для вопроса, но все же):

module Keras2Flux

import JSON
using Flux

export convert

function create_dense(config)
    in = config["input_dim"]
    out = config["output_dim"]
    dense = Dense(in, outо)
    return dense
end

function create_dropout(config)
    p = config["p"]
    dropout = Dropout(p)
    return dropout
end

function create_model(model_config)
    layers = []
    for layer_config in model_config
        if layer_config["class_name"] == "Dense"
            layer = create_dense(layer_config["config"])
        elseif layer_config["class_name"] == "Dropout"
            layer = create_dropout(layer_config["config"])
        else
            println(layer_config["class_name"])
            throw("unimplemented")
        end
        push!(layers, layer)
    end
    model = Chain(layers)
end

function convert(filename)
    jsontxt = ""
    open(filename, "r") do f
        jsontxt = read(f, String)  
    end
    model_params = JSON.parse(jsontxt)  
    if model_params["keras_version"] == "1.1.0"
        create_model(model_params["config"])
    else
        throw("unimplemented")
    end
end

end

1 Ответ

3 голосов
/ 17 июня 2020

Вот полный рецепт, который поможет вам начать:

cd("/home/username/.julia/dev")
using Pkg
pkg"generate Keras2Flux"
cd("Keras2Flux")
pkg"activate ."
pkg"add JSON Flux"
# now copy-paste whatever you need to Keras2Flux\src\Keras2Flux.jl
using Revise
using Keras2Flux
# happy development!
...