lllyasviel/style2paints · error · KeyError
Unknown layer name fed: %s
Error message
Unknown layer name fed: %s
What it means
In Style2PaintsV4.5, feed() resolves string arguments through self.layers and re-raises a descriptive KeyError when the name is absent. Unlike V4, this feed is also invoked from setup() as well as layer_decorated, so a bad name can surface during network setup, not just during layer chaining.
Source
Thrown at V4.5/s2p_v45_server/Style2PaintsV45_source.py:92
self.setup()
def setup(self):
(self.feed('data')
.conv(name='smoothing'))
def get_unique_name(self, prefix):
ident = sum(t.startswith(prefix) for t, _ in self.layers.items()) + 1
return '%s_%d' % (prefix, ident)
def feed(self, *args):
assert len(args) != 0
self.terminals = []
for fed_layer in args:
if isinstance(fed_layer, str):
try:
fed_layer = self.layers[fed_layer]
except KeyError:
raise KeyError('Unknown layer name fed: %s' % fed_layer)
self.terminals.append(fed_layer)
return self
def gauss_kernel(self, kernlen=21, nsig=3, channels=1):
out_filter = np.load('./nets/gau.npy')
return out_filter
def make_gauss_var(self, name, size, sigma, c_i):
kernel = self.gauss_kernel(size, sigma, c_i)
var = tf.Variable(tf.convert_to_tensor(kernel), name=name)
return var
def get_output(self):
'''Returns the smoother output.'''
return self.terminals[-1]
@layer
def conv(self,View on GitHub (pinned to a0d164d6a8)
Solutions
- Inspect net.layers keys and use the exact name in feed
- Fix stale names in setup() after any layer renaming
- Pass tensor objects instead of name strings where the reference is available in scope
Example fix
# before
net.feed('generator_output') # KeyError after rename to 'output'
# after
net.feed('output') # or: net.feed(output_tensor) Defensive patterns
Strategy: validation
Validate before calling
def ensure_layer_exists(net, name):
if name not in net.layers:
raise KeyError(f'{name} not in layers: {list(net.layers.keys())}')
ensure_layer_exists(net, 'output')
net.feed('output') Try / catch
try:
net.feed('output')
except KeyError as e:
print('Available:', list(net.layers.keys()))
raise Prevention
- Audit hardcoded names in setup() against actual layer names after refactors
- Define layer-name constants next to layer creation code
- Prefer passing tensors over name strings in setup()
- Remember feed() is called from setup() too — validate names there as well
When it happens
Trigger: Calling net.feed('name') or a setup path that feeds named layers where the name is not a key in self.layers — layer never created, renamed, auto-suffixed by get_unique_name, or defined on another instance.
Common situations: Hardcoded layer names in setup() that don't match the actual op names; checkpoint/model code updated with renamed layers while feed strings were left stale; typos in names containing auto-generated suffixes like _1, _2.
Related errors
- Unknown layer name fed: %s
- No input variables found for layer %s.
- No input variables found for layer %s.
AI-assisted analysis of lllyasviel/style2paints@a0d164d6a8 (2026-09-02).
Data as JSON: /api/errors/93e6a995e37de0d2.
Report an issue: GitHub.