Переменные в app.config/web.config

Слой Keras LSTM ожидает, что вход будет 3 тусклым, как (batch_size, seq_length, input_dims), но вы неправильно его определили. Попробуйте это

layer_lstm(units = 32, input_shape = c(seq_length, 32), batch_size = batch_size, return_sequences = T)

Вам нужно изменить ваши данные на три, где новые будут представлять последовательные данные.

Я использовал игрушечный набор данных, чтобы показать пример, здесь данные и метки изначально имеют форму ((150, 32), (150,)), используя следующий скрипт:

seq_length = 10 # choice
dataX = []
dataY = []
for i in range(0, 150 - seq_length, 1):
    dataX.append(data[i:i+seq_length])
    dataY.append(labels[i+seq_length-1])
import numpy as np
dataX = np.reshape(dataX, (-1, seq_length, 32))
dataY = np.reshape(dataY, (-1, 1))
# dataX.shape, dataY.shape

Вывод: ((140, 10, 32), (140, 1))

Сейчас Вы можете смело кормить его моделью.

85
задан Peter Mortensen 29 January 2011 в 11:04
поделиться

10 ответов

Хороший вопрос.

я не думаю, что существует. Я полагаю, что было бы довольно известно, если был простой способ, и я вижу, что Microsoft создает механизм в Visual Studio 2010 для развертывания различных конфигурационных файлов для развертывания и теста.

После этих слов однако; я нашел, что у Вас в эти ConnectionStrings раздел есть своего рода заполнитель, названный "|DataDirectory |". Возможно, Вы могли взглянуть на то, что работает там...

Вот часть от machine.config показ его:

 <connectionStrings>
    <add
        name="LocalSqlServer"
        connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
        providerName="System.Data.SqlClient"
    />
 </connectionStrings>
7
ответ дан Community 24 November 2019 в 08:23
поделиться

Для развертывания продуктов, где мы должны настроить много объектов с подобными значениями, мы используем маленькие консольные приложения, которые читают XML, и обновление на основе параметров передало в. Их тогда называет установщик после того, как он попросил у пользователя запрошенной информации.

0
ответ дан cjk 24 November 2019 в 08:23
поделиться

Я борюсь немного с тем, что Вы хотите, но можно добавить, что файлу переопределения к настройкам приложения тогда установили тот файл переопределения на на основание среды.

<appSettings file="..\OverrideSettings.config">
0
ответ дан Andrew Barrett 24 November 2019 в 08:23
поделиться

Я не думаю, что можно объявить и использовать переменные для определения appSettings ключей в конфигурационном файле. Я всегда справлялся с конкатенациями в коде как Вы.

0
ответ дан Michaël Carpentier 24 November 2019 в 08:23
поделиться

Usally, я заканчиваю тем, что писал статический класс со свойствами для доступа к каждой из настроек моего web.config.

public static class ConfigManager 
{
    public static string MyBaseDir
    {
        return ConfigurationManager.AppSettings["MyBaseDir"].toString();
    }

    public static string Dir1
    {
        return MyBaseDir + ConfigurationManager.AppSettings["Dir1"].toString();
    }

}

Обычно, я также делаю преобразования типов при необходимости в этом классе. Это позволяет иметь введенный доступ к Вашей конфигурации, и если настройки изменяются, можно отредактировать их только в одном месте.

Обычно, замена настроек с этим классом относительно легка и обеспечивает намного большую пригодность для обслуживания.

3
ответ дан Martin 24 November 2019 в 08:23
поделиться

У Вас есть несколько опций. Вы могли сделать, это со сборкой / развертывает шаг, который обработал бы Ваш конфигурационный файл, заменяющий Ваши переменные правильным значением.

Другая опция состояла бы в том, чтобы определить Ваш собственный раздел Configuration, который поддерживал это. Например, вообразите этот xml:

<variableAppSettings>
 <variables>
    <add key="@BaseDir" value="c:\Programs\Widget"/>
 </variables>
 <appSettings>
    <add key="PathToDir" value="@BaseDir\Dir1"/>
 </appSettings>
</variableAppSettings>

Теперь Вы реализовали бы эту пользовательскую конфигурацию использования объекты, которые обработают замену переменных для Вас во времени выполнения.

3
ответ дан JoshBerke 24 November 2019 в 08:23
поделиться

Я думал, что просто видел этот вопрос.

Короче говоря, нет, в конфигурации приложения нет никакой интерполяции переменной.

у Вас есть две опции

  1. , Вы могли прокрутить свое собственное, чтобы заменить переменными во времени выполнения
  2. Во время изготовления, массажировать конфигурацию приложения к конкретным специфическим особенностям целевой среды развертывания. Некоторые детали об этом в контакт с кошмаром конфигурации
4
ответ дан Pure.Krome 24 November 2019 в 08:23
поделиться

Немного более сложное, но намного более гибкий, альтернативный должно создать класс, который представляет раздел конфигурации. В Вашем app.config / web.config файл, у Вас может быть это:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <!-- This section must be the first section within the <configuration> node -->
    <configSections>
        <section name="DirectoryInfo" type="MyProjectNamespace.DirectoryInfoConfigSection, MyProjectAssemblyName" />
    </configSections>

    <DirectoryInfo>
        <Directory MyBaseDir="C:\MyBase" Dir1="Dir1" Dir2="Dir2" />
    </DirectoryInfo>
</configuration>

Затем в Вашем коде.NET (я буду использовать C# в своем примере), можно создать два класса как это:

using System;
using System.Configuration;

namespace MyProjectNamespace {

    public class DirectoryInfoConfigSection : ConfigurationSection {

        [ConfigurationProperty("Directory")]
        public DirectoryConfigElement Directory {
            get {
                return (DirectoryConfigElement)base["Directory"];
            }
    }

    public class DirectoryConfigElement : ConfigurationElement {

        [ConfigurationProperty("MyBaseDir")]
        public String BaseDirectory {
            get {
                return (String)base["MyBaseDir"];
            }
        }

        [ConfigurationProperty("Dir1")]
        public String Directory1 {
            get {
                return (String)base["Dir1"];
            }
        }

        [ConfigurationProperty("Dir2")]
        public String Directory2 {
            get {
                return (String)base["Dir2"];
            }
        }
        // You can make custom properties to combine your directory names.
        public String Directory1Resolved {
            get {
                return System.IO.Path.Combine(BaseDirectory, Directory1);
            }
        }
    }
}

Наконец, в Вашем коде программы, можно получить доступ к Вашему app.config переменные, с помощью новых классов, этим способом:

DirectoryInfoConfigSection config =
  (DirectoryInfoConfigSection)ConfigurationManager.GetSection("DirectoryInfo");
String dir1Path = config.Directory.Directory1Resolved;  // This value will equal "C:\MyBase\Dir1"
22
ответ дан Matt Hamsmith 24 November 2019 в 08:23
поделиться

В <appSettings> можно создать ключи приложения,

<add key="KeyName" value="Keyvalue"/>

Позже можно получить доступ к этим значениям использование:

ConfigurationManager.AppSettings["Keyname"]
2
ответ дан Peter Mortensen 24 November 2019 в 08:23
поделиться

Я бы порекомендовал следовать решению Мэтта Хамсмита. Если это проблема для реализации, то почему бы не создать метод расширения, который реализует это в фоновом режиме в классе AppSettings?

Что-то вроде:

    public static string GetValue(this NameValueCollection settings, string key)
    {

    }

Внутри метода вы выполняете поиск в DictionaryInfoConfigSection с помощью Linq и возвращаете значение с соответствующий ключ. Однако вам нужно будет обновить файл конфигурации до чего-то вроде этих строк:

<appSettings>
  <DirectoryMappings>
    <DirectoryMap key="MyBaseDir" value="C:\MyBase" />
    <DirectoryMap key="Dir1" value="[MyBaseDir]\Dir1"/>
    <DirectoryMap key="Dir2" value="[MyBaseDir]\Dir2"/>
  </DirectoryMappings>
</appSettings>
0
ответ дан 24 November 2019 в 08:23
поделиться
Другие вопросы по тегам:

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