我正在尝试学习使用 Keras 模型 API 来修改经过训练的模型,以便随时随地对其进行微调:
一个非常基本的模型:
inputs = Input((x_train.shape[1:]))
x = BatchNormalization(axis=1)(inputs)
x = Flatten()(x)
outputs = Dense(10, activation='softmax')(x)
model1 = Model(inputs, outputs)
model1.compile(optimizer=Adam(lr=1e-5), loss='categorical_crossentropy', metrics=['categorical_accuracy'])
Run Code Online (Sandbox Code Playgroud)
它的架构是
InputLayer -> BatchNormalization -> Flatten -> Dense
在对它进行一些训练批次之后,我想在 Flatten 和输出之间添加一些额外的 Dense 层:
x = Dense(32,activation='relu')(model1.layers[-2].output)
outputs = model1.layers[-1](x)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,我得到了这个:
ValueError:输入 0 与层密集_1 不兼容:输入形状的预期轴 -1 具有值 784 但得到形状(无,32)
有人可以解释一下发生了什么以及如何/是否可以向已经训练好的模型添加层?
谢谢
我在我的项目中使用 django-environ 和 postgresql。我一直在搜索文档,发现 DATABASE_URL 的格式如下:
DATABASE_URL=psql://用户名:密码:端口@database_url/db_name
但是,通过这样做, env.db('DATABASE_URL') 的输出是
{'PASSWORD': '', 'HOST': '用户', 'PORT': 密码, 'NAME': '', 'USER': '', 'ENGINE': 'django.db.backends.postgresql'}
我在这里做错了什么?
我很难理解如何将数据写入 .env 文件以获取字典。
文档是这样说的:
dict (BAR=key=val;foo=1.1;baz=True) #environ.Env(BAR=(dict(value=unicode,
cast=dict(foo=float,baz=bool)), {}))
Run Code Online (Sandbox Code Playgroud)
在我的 .env 文件中我有这样的东西
EMAIL=host=xx;port=xx;user=xx;pass=xx;tls=True
Run Code Online (Sandbox Code Playgroud)
但是,我真的不知道要在 settings.py 文件中传递什么内容
在我的 settings.py 中,我使用 django-environ ,如下所示:
import os
import environ
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
env = environ.Env(
SECRET_KEY=str,
)
env_path = os.path.join(BASE_DIR, '.env')
environ.Env.read_env('.env')
SECRET_KEY = env('SECRET_KEY')
Run Code Online (Sandbox Code Playgroud)
我的 .env 文件看起来像这样
SECRET_KEY = ******************
Run Code Online (Sandbox Code Playgroud)
但是,当我运行该应用程序时,我得到
django.core.exceptions.ImproperlyConfigured:设置 SECRET_KEY 环境变量
找到 .env 文件并从中读取行,因此找到它没有问题,但不知何故它不起作用。
在跟踪执行线程时,我发现用于解释 .env 行的正则表达式没有返回任何内容
for line in content.splitlines():
m1 = re.match(r'\A(?:export )?([A-Za-z_0-9]+)=(.*)\Z', line)
if m1:
key, val = m1.group(1), m1.group(2)
m2 = re.match(r"\A'(.*)'\Z", val)
if m2:
val = m2.group(1)
m3 = re.match(r'\A"(.*)"\Z', val)
if m3:
val = re.sub(r'\\(.)', r'\1', m3.group(1))
cls.ENVIRON.setdefault(key, str(val))enter …Run Code Online (Sandbox Code Playgroud)