Ошибка в nrow [w] * ncol [w]: нечисловой аргумент для двоичного оператора [duplicate]

Используйте thing[:]

>>> a = [1,2]
>>> b = a[:]
>>> a += [3]
>>> a
[1, 2, 3]
>>> b
[1, 2]
>>> 
5
задан Adarsh Chavakula 25 September 2014 в 21:52
поделиться

4 ответа

Сделайте str (cv_data) и убедитесь, что они все числовые.

0
ответ дан cory 21 August 2018 в 05:01
поделиться

Попробуйте отрегулировать значение threshold до значения более 0,01 или stepmax до более чем 1e06 или с помощью threshold 0,1, а затем уменьшите его оттуда. Вы также можете добавить аргумент lifesign = "full", чтобы наблюдать за производительностью создания модели с шагом 1000 шагов, чтобы действительно набрать порог. Это «разрешило» не двоичную ошибку, которую я имел, но точность модели, средняя квадратичная ошибка и другие результаты были меньше, чем удовлетворение в качестве прямого результата.

2
ответ дан Joseph Sible 21 August 2018 в 05:01
поделиться
  • 1
    Вау, я задал этот вопрос 4 года назад. Теперь я перешел от R (я все еще использую его для визуализации данных, но не для серьезного машинного обучения). Я не думаю, что пакет neuralnet в R даже сравним с тем, что Tensorflow или PyTorch могут делать в Python. – Adarsh Chavakula 6 April 2018 в 20:51
  • 2
    Это не отвечает на вопрос. Если у вас другой вопрос, вы можете задать его, нажав Ask Question . Вы также можете добавить щедрость , чтобы привлечь больше внимания к этому вопросу, если у вас достаточно репутации . - Из обзора – miken32 6 April 2018 в 22:11
  • 3
    @Adarsh ​​Chavakula Вы определенно правы в отношении удобства использования Python в сравнении с этим конкретным пакетом, когда дело доходит до глубокого обучения. Обычно я использую эту функцию, чтобы почувствовать модель с данным набором данных, а затем перейти к более подробному анализу / построению модели с помощью PyTorch. Опять же, это помогло мне, когда у меня была такая же ошибка, но, глядя на документацию по пакету, я теперь считаю, что это сообщение об ошибке - просто общее сообщение, чтобы охватить несколько несходных ситуаций. – 08walshth 9 April 2018 в 13:34

Старайтесь, чтобы вы никогда не устанавливали startweights в функции neuralnet(). Согласно документации

neuralnet(formula, data, hidden = 1, threshold = 0.01,
    stepmax = 1e+05, rep = 1, startweights = NULL,
    learningrate.limit = NULL,
    learningrate.factor = list(minus = 0.5, plus = 1.2),
    learningrate=NULL, lifesign = "none",
    lifesign.step = 1000, algorithm = "rprop+",
    err.fct = "sse", act.fct = "logistic",
    linear.output = TRUE, exclude = NULL,
    constant.weights = NULL, likelihood = FALSE)

startweights            a vector containing starting values for the weights. The weights will not be randomly initialized.

Обратите внимание, что значение по умолчанию NULL, и оно НЕ будет инициализировано случайным образом. Попытайтесь что-то там положить и посмотрите, работает ли это.

-1
ответ дан Steven 21 August 2018 в 05:01
поделиться
  • 1
    Ну, это не предполагается, но я предполагаю, что он инициализируется случайным набором весов. Я только что обнаружил, что эта проблема с конвергенцией и в зависимости от выбора случайного числа, затраченного сетью, может или не может сходиться. Я не получаю указанную ошибку при конвергенции. – Adarsh Chavakula 26 September 2014 в 14:17
  • 2
    Если вы выкапываете функцию нейронной сети, вы заметите, что если начальный вес установлен в NULL, он будет произвольно присваивать веса при запуске. Проверить функцию generate.startweights () в пакете neuralnet, который вызывается одной из подпрограмм neuralnet при запуске обучения neuralnet () – Tetlanesh 13 April 2015 в 07:54

Я просто столкнулся с той же проблемой. Проверяя исходный код функции compute, мы видим, что он принимает один из результирующих атрибутов (т. Е. weights), определенный только тогда, когда сеть заканчивает обучение безупречным.

> trace("compute",edit=TRUE)
function (x, covariate, rep = 1) {
    nn <- x
    linear.output <- nn$linear.output
    weights <- nn$weights[[rep]]
    [...]
}

Я думаю, что реальная проблема заключается в том, что neuralnet не сохраняет текущую сеть после достижения значения stepmax, вызывая эту ошибку позже в коде compute.

Изменить

Кажется, вы можете избежать этого сброса, комментируя строки 65 & amp; 66 функции calculate.neuralnet

> fixInNamespace("calculate.neuralnet", pos="package:neuralnet")
[...]
#if (reached.threshold > threshold) 
#    return(result = list(output.vector = NULL, weights = NULL))
[...]

Тогда все работает как прелесть:)

3
ответ дан Warren 21 August 2018 в 05:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: