mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-11-04 01:48:04 +03:00 
			
		
		
		
	Fix compatibility with CuPy 9.x (#11194)
After the precomputable affine table of shape [nB, nF, nO, nP] is computed, padding with shape [1, nF, nO, nP] is assigned to the first row of the precomputed affine table. However, when we are indexing the precomputed table, we get a row of shape [nF, nO, nP]. CuPy versions before 10.0 cannot paper over this shape difference. This change fixes compatibility with CuPy < 10.0 by squeezing the first dimension of the padding before assignment.
This commit is contained in:
		
							parent
							
								
									36ff2a5441
								
							
						
					
					
						commit
						4ee8a06149
					
				| 
						 | 
				
			
			@ -26,7 +26,11 @@ def forward(model, X, is_train):
 | 
			
		|||
    Yf = model.ops.alloc2f(X.shape[0] + 1, nF * nO * nP, zeros=False)
 | 
			
		||||
    model.ops.gemm(X, W.reshape((nF * nO * nP, nI)), trans2=True, out=Yf[1:])
 | 
			
		||||
    Yf = Yf.reshape((Yf.shape[0], nF, nO, nP))
 | 
			
		||||
    Yf[0] = model.get_param("pad")
 | 
			
		||||
 | 
			
		||||
    # Set padding. Padding has shape (1, nF, nO, nP). Unfortunately, we cannot
 | 
			
		||||
    # change its shape to (nF, nO, nP) without breaking existing models. So
 | 
			
		||||
    # we'll squeeze the first dimension here.
 | 
			
		||||
    Yf[0] = model.ops.xp.squeeze(model.get_param("pad"), 0)
 | 
			
		||||
 | 
			
		||||
    def backward(dY_ids):
 | 
			
		||||
        # This backprop is particularly tricky, because we get back a different
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user