The present disclosure relates to a data processing system and method.
Neural network computations may be performed in data processing systems including microprocessors such as neural processing units (NPUs), central processing units (CPUs), and graphics processing units (GPUs). It is desirable to improve the security of neural network computations.
According to a first aspect of the present disclosure, there is provided a data processing system comprising: storage; and at least one processor to: generate output data using at least a portion of a first neural network layer; generate a key associated with at least the portion of the first neural network layer; obtain the key from the storage; obtain a version of the output data for input into a second neural network layer; and, using the key, determine whether the version of the output data differs from the output data.
According to a second aspect of the present disclosure, there is provided a method comprising: generating output data using at least a portion of a first neural network layer; generating a key associated with at least the portion of the first neural network layer; storing the key in storage; obtaining the key from the storage; obtaining a version of the output data for input into a second neural network layer; and, using the key, determining whether the version of the output data differs from the output data.
Further features will become apparent from the following description, given by way of example only, which is made with reference to the accompanying drawings.
Details of systems and methods according to examples will become apparent from the following description, with reference to the Figures. In this description, for the purpose of explanation, numerous specific details of certain examples are set forth. Reference in the specification to “an example” or similar language means that a particular feature, structure, or characteristic described in connection with the example is included in at least that one example, but not necessarily in other examples. It should further be noted that certain examples are described schematically with certain features omitted and/or necessarily simplified for ease of explanation and understanding of the concepts underlying the examples.
In examples herein, output data is generated using at least a portion of a first neural network layer. A key associated with at least the portion of the first neural network layer is also generated, and stored in storage. The key is obtained from the storage and a version of the output data for input into a second neural network layer is obtained. Using the key, it can then be determined whether the version of the output data differs from the output data generated using the first neural network layer. This approach for example allows detection of whether the output data has been tampered with, e.g. by a malicious party seeking to expose information useable in the neural network, such as confidential or otherwise sensitive information. In this way, the security of a neural network comprising the first neural network layer can be improved. This approach may also for example allow detection of whether the output data has been corrupted, e.g. due to a soft error, which is for example an error (such as a broken component) that causes stored data (such as the output data) to be altered in an unintended manner, e.g. due to memory corruption. A soft error may for example occur in the storage or may occur in a logic circuit of a processor configured to perform methods according to examples described herein. A soft error may for example be caused by cosmic rays colliding with said processor.
Neural networks for use with the methods herein, such as the neural network 102 of
In the method 100, output data 101 is generated using the first neural network layer 104. For example, the output data 101 may be generated by applying an operation on input data 105 that is input to the first neural network layer 104 using weights associated with the first neural network layer 104. The input data 105 is data to be processed by the neural network 102, such as image data, sound data or text data. The operation applied by the first neural network layer 104 may for example be a convolution of the input data 105 and the weights and, in some cases, addition of a bias. In some examples, the data resulting from such an operation may be further processed, for example by applying an activation function and/or pooling the output of the operation. In this way, the first neural network layer 104 may be a fusion of various types of layers such as convolutional layer(s), pooling layer(s), activation layer(s) and/or fully connected layer(s). In some examples, the input data 105 may be divided into portions such that the input data 105 is processed using the first neural network layer 104 on a portion-by-portion basis, e.g. on a tile-by-tile basis. The same principles may also apply to the second neural network layer 106.
Internal storage 112 of a data processing system 107 configured to implement the neural network 102 may not have sufficient storage capacity to store all the data associated with use of the neural network 102, such as the input data 105, the output data 101 and weight data representative of weights associated with a respective layer of the neural network 102. Hence, in the method 100 of
In the method 100 of
In the method 100 of
In the example of
The version of the output data 103 for input into the second neural network layer 106 should be the same as the output data 101 generated using the first neural network layer 104 provided the version of the output data 102 has not been altered. However, the version of the output data 103 for input into the second neural network layer 106 may differ from the output data 101 generated using the first neural network layer 104, e.g. if a malicious party has modified the version of the output data 103. For example, prior to processing the version of the output data 103 using the second neural network layer 106, the version of the output data 103 and, in some cases, weights associated with the second neural network layer 106 may be obtained from the external storage 108. In examples where the output data 101 is compressed, the version of the output data 103 may be decompressed before further processing of the version of the output data 103 (e.g. using the second neural network layer 106). A malicious party may gain unauthorized access to the external storage 108 and may alter the output data 101 generated by the first neural network layer 104, and stored in the external storage 108, to generate a version of the output data 103 for input into the second neural network layer 106 that differs from the output data 101 originally stored in the external storage 108. The malicious party may alter the output data 101 in order to extract information characterizing the second neural network layer 106. For example, the output data 101 may be replaced or modified to provide directed data, for example an impulse response function, for input to the second neural network layer 106 as the version of the output data 103. This may be such that processing the directed data using the second neural network layer 106 (for example by convolving weights associated with the second neural network layer 106 with the directed data in the case of a convolutional layer) outputs the weights of the second neural network layer 106 themselves. This allows a malicious party to determine the weights of second neural network layer 106, leaving the weights exposed to manipulation or unauthorized use. By determining whether the output data 101 generated using the first neural network layer 104 has been tampered with or corrupted before the version of the output data 103 is input to the second neural network layer 106 the security of the neural network 102 is improved.
Many applications of neural networks such as facial recognition for example, require that weights associated with the neural network are secure and not exposed to any other application. In an example of using facial recognition to unlock a smartphone belonging to a specific user, the exposure of weights may allow a third party, knowing these weights, to input specific predetermined data that when operated on by the weights, falsely detects the specific user and unlocks the smartphone. Using the methods herein allows unauthorized modification of the output data 101 to be identified. Appropriate mitigating action can hence be taken, to reduce the risk of sensitive data, such as neural network weights, being exposed.
Using the key 109, the data analyser 114 determines whether the version of the output data 103 differs from the output data 101 generated using the first neural network layer 104. In this way, the data analyser 114 can determine whether the output data 101 has been modified or replaced by different data since being generated and before being input into a second neural network layer 106. In an example where the key generator 110 generates multiple keys per layer, the version of the output data 103 for which this determination is performed may represent a smaller portion of data because, in this case, the output data 101 generated using the first neural network layer 104 may be divided into portions such that the key generator 110 generates a key for each portion of the output data 101. This may reduce the processing power required to perform this determination.
The data analyser 114 may respond in a certain manner in response to the determination of whether the version of the output data 103 for input to the second neural network layer 106 differs from the output data 101 generated using the first neural network layer 104. For example, the data analyser 114 may determine that the version of the output data 103 is the same as the output data 101, and hence that the output data 101 has not been modified or replaced since it was first was generated using the first neural network layer 104. The version of the output data 103 may then be processed by the second neural network layer 106 without the risk of the weights and biases of the second neural network layer 106 being exposed. The data analyser 114 in the example of
In this example, in response to determining that the version of the output data 103 differs from the output data 101, the data analyser 114 generates data indicating that the version of the output data 103 differs from the output data 101. The data generated by the data analyser 114 for example indicates that the output data 101 has been modified or replaced since it was first generated using the first neural network layer 104. This indicates for example that a malicious party may be attempting to input malicious data such as directed data into the second neural network layer 106. In this example, the data indicating that the version of the output data 103 differs from the output data 101 may be used to prevent the processing of the version of the output data 103 using the second neural network layer 106, reducing the risk of the weights associated with the second neural network layer 106 being exposed. The data indicating that the version of the output data 103 differs from the output data 101 may for example represent an indication of such a difference, which may be in any suitable format, e.g. a binary flag indicating whether the output data 103 differs or not. Such an indication may be processed by the second neural network layer 106 to determine whether to proceed with processing the version of the output data 103. In other cases, though, the data analyser 114 may instead or in addition generate appropriate control instructions for sending to the second neural network layer 106 to instruct the second neural network layer 106 not to process the version of the output data 103. In this way, the risk of a malicious party successfully extracting the weights associated with the second neural network layer 106 by tampering with the output data 101 is reduced. It is to be appreciated that the method 100 of
After determining that the version of the output data 103 differs from the output data 101, various actions may be taken. For example, the second neural network layer 106 may be controlled, e.g. using the data indicating that the version of the output data 103 differs from the output data 101, to omit processing of the version of the output data 103 and/or to further stop the processing performed by the remaining layers of the neural network 102. In another example, e.g. where the at least one processor of the data processing system 107 is controlled and configured by a central processing unit (CPU), an interrupt command may be sent to the CPU in response to determining that the version of the output data 103 differs from the output data 101. In a further example, the at least one processor of the data processing system 107 (which may e.g. be an NPU) may cease processing data, to reduce the risk of processing malicious data. In some examples, the at least one processor (e.g. the NPU) may be reset.
The determination of whether the version of the output data differs from the output data can be performed in various ways.
In the method 200 of
In examples described herein, a signature may be a value calculated from data and a key that may be used to verify that the data has not been modified or replaced since being generated. In one example, the signature may be a cyclic redundancy check (CRC) based on a remainder of a polynomial division of the data by a value determined by the key. In the case that the first signature 111 is a CRC, this may be calculated based on the remainder of a polynomial division of the output data 201 generated by the first neural network layer 204 by the key 209 associated with the first neural network layer 204. Although the CRC is given here as an example, it should be understood that any type of signature (e.g. hash-based signatures) may be used to verify that the data has not been modified or replaced since being generated. Since the key can be generated on a per layer and/or per run basis as described above, it is to be understood that the signature may differ for outputs of different neural network layers and/or for outputs of the same neural network layer at different times. The variability in the signature calculated on a per layer and per run basis reduces the risk of the signature being determined. In the method 200 of
In the example shown in
In the method 300 of
Storing the encrypted output data 115 in the external storage 308 (which is typically more susceptible to unauthorized access than the internal storage 312) instead of the output data 301, reduces the risk of a malicious party obtaining a useable version of the output data 301. For example, even if the malicious party obtains the encrypted output data 115 from the external storage 308, they must still decrypt the encrypted output data 115 before use, which is generally difficult, if not impossible, without the key 309. This can be beneficial in certain use cases, which involve the processing of sensitive input data 305, such as super resolution neural networks. Super resolution neural networks can be used to generate a high resolution image from its lower resolution counterpart, and may require that inputs and outputs associated with the neural network 302 (such as the inputs and outputs associated with a given neural network layer) are secure and not exposed to any other applications. In an example of using a super resolution network to upscale video content hidden behind a subscriber paywall, the exposure of inputs (for example the low resolution image) or outputs (for example the high resolution image) may allow a third party to access the video content without paying the required subscription fee. However, the methods herein may be used to reduce the risk of exposure of private content to unauthorized parties. In some examples, the malicious party may replace or modify the input data 305 to provide directed data, for example an impulse response function, for input into the first neural network layer 304. This may be such that processing the input data 305 using the first neural network layer 304 outputs the weights and/or biases of the first neural network layer 304. However, if the output data 301 is encrypted, the malicious party will be unable to decrypt the encrypted output data 115 (and hence access the weights and/or biases) unless they gain access to the key 309, which is stored securely in the internal storage 312. This reduces the risk of exposure of weights and/or biases of the first neural network layer 304.
In the method 300 of
In this example, the data analyser 314 determines whether the version of the output data 303 differs from the output data 301 based on the decrypted version of the output data 117. For example, if the version of the output data 303 has been modified, e.g. by a malicious party, decrypting the version of the output data 303 will typically lead to a decrypted version of the output data 117 that is unusable as an input to the second neural network layer 306. Furthermore, if a malicious party has replaced the encrypted output data 115 stored in the external storage 308, e.g. with directed data for use as the version of the output data 303, the decrypted directed data will differ from the directed data that the malicious party intended for processing using the second neural network layer 306 with the aim of exposing the weights of the second neural network layer 306 as described above. Hence, processing the decrypted directed data using the second neural network layer 306 will not output the weights associated with the second neural network layer 306 in the way that processing the originally input directed data would. In other examples, the data analyser 314 may evaluate features of the decrypted version of the output data 117 (which may be referred to as statistics) in order to determine whether the version of the output data 303 differs from the output data 301. For example, the data analyser 314 may evaluate the mean or variance of the decrypted version of the output data 117 or a portion of the output data 117. If the version of the output data 303 has been modified, e.g. by a malicious party, the features of the decrypted version of the output data 117 may significantly differ from expected features, e.g. based on the of the output data 301. In response to the data analyser 314 determining that the features of the decrypted version of the output data 117 differs from the expected features, the data analyser 314 may generate data indicating that the version of the output data 303 differs from the output data 301 as described above with reference to the data analyser 114 of
The image processing system 126 includes a neural processing unit (NPU) 128. The NPU 128 is operable or otherwise configured to perform any of the methods described herein, such as the methods 100, 200 and/or 300 of
The image processing system 126 also includes storage 130 for storing the key and in some examples, the first signature as described in examples above. The storage 130 may be static random access memory (SRAM). Alternatively, the storage 130 may be or include a plurality of single-bit storage devices. Typically, a single-bit storage device is an electronic component with two stable states, one of which represents a value of zero, and the other of which represents a value of one, for example. A flip-flop and a latch are each examples of single-bit storage devices. The plurality of single-bit storage devices may be used to store the key in cases where the data size of the key is relatively small. The storage 130 may be on-chip or local storage of the image processing system 126. In this case, the storage 130 may correspond to the internal storage 112, 212, 312 shown in
The image processing system 126 includes a direct memory access (DMA) engine 132 to control data flow in the image processing system 126. In this example, the DMA engine 132 is configured to allow the NPU 128 to access the storage 130 directly, e.g. independently of other components both internal and external to the image processing system 126. The DMA engine 132 may be configured to transfer the key solely between the NPU 128 and the storage 130 of the image processing system 126, without transferring the key to other components, e.g. any other internal components of the image processing system 126 and/or any components external to the image processing system 126. For example, the key stored in the storage 130 may be solely accessible to the unit in the image processing system 126 responsible for controlling data flow, namely the DMA engine 132, which can in turn control which other components the key is provided to. For example, the DMA engine 132 may be configured to send the key to the NPU 128 but not to other components of the image processing system 126. This reduces the opportunity for the key to be obtained by a malicious party since a limited number of components in the image processing system 126 have access to the key. In the example where the storage 130 includes a plurality of single-bit storage devices such as a plurality of flip-flops, the DMA engine 132 may not be required for the NPU 128 to access the storage 130. In general, it is to be appreciated that, in some examples, the image processing system 126 is configured such that the storage 130 is solely accessible by the NPU 128 of the image processing system 126.
Where the image processing system 126 is configured to implement the method 200 of
The image processing system 126 includes an interface 134, via which the NPU 128 communicates with external storage 136 in a manner controlled by the DMA engine 132. The external storage 136 is external to the image processing system 126 and may be a random access memory (RAM) such as DDR-SDRAM (double data rate synchronous dynamic random access memory). In other examples, the external storage 136 may be or include a non-volatile memory such as Read Only Memory (ROM) or solid state drive (SSD) such as Flash memory. The external storage 136 in examples may include further storage devices, for example magnetic, optical or tape media, compact disc (CD), digital versatile disc (DVD) or other data storage media. For example, the external storage 136 may be or include storage (such as a main memory or system memory) of a computing system or device arranged to use the image processing system 126 to process input image data. Such a computing device may be a personal computer, a smartphone, a tablet, an image capture device (such as camera or video camera) or an on-board computer device which may be coupled to or mounted within a vehicle such as a car, although this is not intended to be limiting.
As explained above, when implementing neural networks, it may not be possible for all of the data including, for example, the input data, the output data, and data corresponding to the operations involved in the neural network such as weights and/or biases, to be stored in the storage 130 internal to the image processing system 126. At least some of the data may be stored in the external storage 136, which may include volatile and/or non-volatile storage. The NPU 128 may access the external storage 136 when executing the neural network via the interface 134. In this example, the NPU 128 is configured to send the output data to the external storage 136, external to the image processing system 126. In this case, the NPU 128 is also configured to obtain the version of the output data from the external storage 136, the version of the output data being for input into the second neural network layer as described in examples above. Using the external storage 136 alongside the storage 130 of the image processing system 126 allows larger amounts of data associated with the neural network processed by the NPU 128 to be stored compared to solely using the storage 130 of the image processing system 128.
In this example, the image processing system 126 is arranged to perform the methods described with reference to
In
Item 156 of the method 152 includes generating a second key. In this case, the second key is associated with the second neural network layer. For example, the second key may be unique to the second neural network layer. Similar to the first key, the second key may also be generated on a per-run basis such that multiple runs of the second neural network layer at different times will result in different keys being generated at each run. In other examples similar to examples described above with reference to the first neural network layer, multiple keys may be generated that are associated with the second neural network layer.
Item 158 of the method 152 includes sending the second output data to a second data processing system. In this example (in which the method 152 is implemented using the computing system 140 of
Item 160 of the method 152 includes sending the second key to the second data processing system, which in this example is the display processor 144. The second output data and the second key may be sent together to the second data processing system, e.g. in the same communication, or may be sent separately, e.g. at different respective times. Referring back to
The transfer of the second key to the display processor 144 may be performed securely by assigning trust levels to each component of the computing system 140 in order to determine how much access the component has to certain data or other components such as the storage 148 storing the second key. For example, components within a secure environment (“or secure domain”) may be trusted within the computing system 140 and therefore allowed access to security-sensitive data within the computing system 140 for example. Components outside the secure environment (e.g. in a less secure environment or a “non-secure domain”), however, may not be allowed access to such security-sensitive data such as the second key stored in the storage 148. In this way, components in the secure environment may have access to certain storage (e.g. secure or “protected” memory regions) which are not accessible to components and systems outside the secure environment. In this example, the image processing system 126 and the display processor 144 may both be assigned trust levels indicating that the image processing system 126 and the display processor 144 are within the secure domain allowing them access to the storage 148. This may therefore allow the second key to be securely sent to the display processor 144 using the shared storage 148 accessible to both the image processing system 126 and display processor 144. In this case, the shared storage 148 may also have been assigned a trust level indicating that the shared storage 148 is within a secure domain allowing the shared storage 148 to store security-sensitive data such as the second key. These access controls may be implemented using an embedded hardware technology such as TrustZone® by Arm®. In this way, the second key may only be shared with components of the computing system 140 meeting certain security requirements, thereby reducing the risk of the second key being obtained by unauthorized parties.
The computing system 140 of
The second output data may be encrypted before being sent to the display processor 144 for example using an encryption engine such as the encryption engine 122 described above with reference to
The second key may be used by the display processor 144 to determine whether the version of the second output data obtained by the display processor 144 from the image processing system 126 differs from the second output data generated using the second neural network layer of the image processing system 126. This determination may be performed using similar methods to those described with reference to
The display processor 144 may then determine whether to process the second output data based on determining whether the version of the second output data differs from the second output data. For example, the display processor 144 may only process the version of the second output data in response to determining that the version of the second output data is the same as the second output data. This may reduce the risk of exposing sensitive information to a malicious party.
In other examples, e.g. where the image processing system 126 and the display processor 144 are within different computing systems as will be described below with reference to
In this example, the image processing system 126 is arranged to perform the methods described with reference to
The method 174 of
Item 176 of the method 174 includes obtaining a third key from a third data processing system, which in this example is the ISP 166. The image processing system 126 of
The third key obtained at item 176 of the method 174 is associated with input data for input into the first neural network layer to be processed using the image processing system 126 (e.g. by an NPU of the image processing system 126). This input data may be image data generated by the ISP 166 such that the third key is associated with the image data. The third key may be transferred between the ISP 166 and the image processing system 126 using any of the secure mechanisms described above. For example, as shown in
Item 178 of the method 174 includes obtaining a version of the input data for input into the first neural network layer. The version of the input data is for example obtained by the image processing system 126 from the ISP 166. The version of the input data may be received by the image processing system 126 directly from the ISP 166 or may be stored in storage (which may be the same as or different from the storage 170 of the computing system 162) and subsequently obtained by the image processing system 126.
Item 180 of the method 174 includes using the third key to determine whether the version of the input data differs from the input data. As such, it can be determined if there is a risk of the exposure of the weights associated with the first neural network layer should the image processing system 126 process the version of the input data using the first neural network layer. This determination may be performed using similar methods to those described above. In an example where a first and second signature are calculated, the first signature may be calculated by the ISP 166 based on the third key and the input data. The first signature may then be sent to the image processing system 126 in a secure manner, e.g. the same secure manner as that in which the third key is sent to the image processing system 126. The image processing system 126 may then calculate the second signature based on the obtained version of the input data and the third key so that it can be determined whether the second signature is equal to the first signature and therefore whether the input data has been tampered with during transmission between the ISP 166 and the image processing system 126.
The image processing system 126 may process the version of the input data using the first neural network layer in response to determining that the version of the input data is the same as the input data. In response to determining that the version of the input data differs from the input data, the image processing system 126 may be configured to generate data representing an indication that the version of the input data differs from the input data and/or the image processing system 126 may omit processing of the version of the input data using the first neural network layer. This reduces the risk of the first neural network layer being used to process input data containing malicious data, e.g. that could expose the weights associated with the first neural network layer.
In some examples, the input data is encrypted using the third key to generate encrypted input data for transmission to the image processing system 126. In these examples, the image processing system 126 (e.g. an NPU of the image processing system 126) may include a decryption engine configured to decrypt the version of the input data for input into the first neural network using the third key. The decryption engine may for example be the same as or similar to the decryption engine 124 described above with reference to
Although the computing system of
Thus, it can be seen that methods described herein allow for determining whether data for input into a neural network layer has been altered since the data was first generated. Furthermore, methods described herein can reduce the risk of exposure of input data, output data, and/or data corresponding to the operations involved in the neural network (e.g. weights and/or biases) to a malicious party. The security of input and output data here is not limited to the inputs and outputs of the neural network as a whole but also applies to the inputs and outputs of individual neural network layers.
Although the computing systems 140, 162 of
Further examples are envisaged. For a given neural network layer of a neural network such as those described above, it may not be possible to process all the input data using the neural network layer in a single go. For example, a whole input image, or an input feature map resulting from the operation of one or more neural network layers on the input image, may have too large a size to be processed using a neural network layer in a single instance. Therefore, in some examples, the data for input into a neural network layer may be divided into portions to be processed, e.g. in turn or in parallel, using the neural network layer.
Applying this principle to the image processing system 126 of
In this example, the location identifier may be a unique identifier identifying each of the tiles in the image 190. In a simple example where the image 190 is divided into four tiles, the location identifier may be a 2-bit binary number. For example, the portion of image data representing the top-left tile 192 may have a location identifier with a value of 00. The portion of the image data representing the top-right tile 194 may have a location identifier with a value of 01. The portion of the image data representing the bottom-left tile 196 may have a location identifier with a value 10 and the portion of the image data representing the bottom-right tile 198 may have a location identifier with a value of 11. In this way, the location identifier identifies the corresponding portion of the image data within the image data.
In this example, the key associated with the first neural network layer is modified based on the location identifier. For example, the location identifier value may be appended to the value of the key to generate a modified key for each tile of the image 190. In this way, for a given tile, the modified key associated with the given tile will be used to determine whether the portion of the version of the image data differs from the corresponding portion of the image data. In this example, the storage 130 of the image processing system 126 may still store the key, without any appended location identifier such that a single key is stored as opposed to four different keys, reducing the capacity requirements of the storage 130. In this case, the location identifier for a given tile is appended to the single key as and when the modified key for a given tile is required.
To understand this principle, this example considers a signature-based determination of whether the portion of the version of the image data differs from the corresponding portion of the image data. It should be understood, though, that the same principle may be applied when this determination is based on a decrypted portion of the version of the image data.
In this example, for a portion of the image data, a first signature is calculated based on this portion of the image data and the modified key generated by appending the location identifier for the given tile (for example the top-left tile 192) to the key associated with the first neural network layer. The storage 130 may then store the unmodified key and the first signature. The portion of the image data may be sent to the external storage 136 via the interface 134. This may be controlled by the DMA engine 132. When a corresponding portion of the version of the image data representing the given tile of the version of the image (for example the top-left tile of the version of the image) is obtained from the external storage 136 using the DMA engine 132, the matching location identifier can be appended to the key obtained from storage 130 to recreate the modified key. The NPU 128 of the image processing system 126 is configured to calculate a second signature based on the recreated modified key and the portion of the version of the image data such that the NPU 128 may determine whether the second signature is equal to the first signature. In this way, the examples described herein may be applied on a portion-by-portion basis. In an alternative embodiment, a separate key (and, in some examples, a separate signature) may be generated for each tile of the image 190 providing variability in the keys generated for each tile.
Further examples are envisaged. For example, although the first and second neural network layers are referred to in the singular in examples described herein, it is to be understood that either or both of the first and second neural network layers may be a fusion of a plurality of neural network layers, such that processing a neural network layer as described above may actually involve the processing of multiple layers. For example, the NPU 128 of the image processing system 126 in
In examples above, output data is generated using a first neural network layer and a key associated with the first neural network is generated. However, it is to be appreciated that in some cases, output data may be generated using at least a portion of a neural network layer, e.g. less than all of the neural network layer. In such cases, the key may be associated with at least the portion of the neural network layer. For example, the output data 101 of
It is to be understood that any feature described in relation to any one example may be used alone, or in combination with other features described, and may also be used in combination with one or more features of any other of the examples, or any combination of any other of the examples. Furthermore, equivalents and modifications not described above may also be employed without departing from the scope of the accompanying claims.